1#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8pub struct AccessCode {
9 #[prost(string, tag="1")]
11 pub id: ::prost::alloc::string::String,
12 #[prost(string, tag="2")]
15 pub code: ::prost::alloc::string::String,
16 #[prost(string, tag="3")]
19 pub label: ::prost::alloc::string::String,
20 #[prost(message, optional, tag="4")]
22 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
23 #[prost(message, optional, tag="5")]
25 pub redeemed_at: ::core::option::Option<::prost_types::Timestamp>,
26 #[prost(string, tag="6")]
28 pub redeemed_by: ::prost::alloc::string::String,
29 #[prost(message, optional, tag="7")]
31 pub revoked_at: ::core::option::Option<::prost_types::Timestamp>,
32}
33#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
35pub struct GenerateAccessCodesRequest {
36 #[prost(int32, tag="1")]
38 pub count: i32,
39 #[prost(string, tag="2")]
42 pub label: ::prost::alloc::string::String,
43}
44#[derive(Clone, PartialEq, ::prost::Message)]
46pub struct GenerateAccessCodesResponse {
47 #[prost(message, repeated, tag="1")]
49 pub access_codes: ::prost::alloc::vec::Vec<AccessCode>,
50}
51#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
53pub struct ListAccessCodesRequest {
54}
55#[derive(Clone, PartialEq, ::prost::Message)]
57pub struct ListAccessCodesResponse {
58 #[prost(message, repeated, tag="1")]
60 pub access_codes: ::prost::alloc::vec::Vec<AccessCode>,
61}
62#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
64pub struct RevokeAccessCodeRequest {
65 #[prost(string, tag="1")]
67 pub access_code_id: ::prost::alloc::string::String,
68}
69#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
71pub struct RevokeAccessCodeResponse {
72}
73#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
77pub struct SubmitActionRequest {
78 #[prost(string, tag="1")]
81 pub delivery_id: ::prost::alloc::string::String,
82 #[prost(string, tag="2")]
85 pub action_id: ::prost::alloc::string::String,
86 #[prost(bytes="vec", tag="3")]
89 pub payload: ::prost::alloc::vec::Vec<u8>,
90}
91#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
93pub struct SubmitActionResponse {
94 #[prost(bool, tag="1")]
96 pub success: bool,
97}
98#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
104pub struct ChannelEvent {
105 #[prost(string, tag="1")]
106 pub org_id: ::prost::alloc::string::String,
107 #[prost(string, tag="2")]
108 pub campaign_id: ::prost::alloc::string::String,
109 #[prost(string, tag="3")]
110 pub recipient_user_id: ::prost::alloc::string::String,
111 #[prost(enumeration="ChannelName", tag="4")]
112 pub channel: i32,
113 #[prost(enumeration="ChannelStepKind", tag="5")]
114 pub step_kind: i32,
115 #[prost(enumeration="ChannelEventStatus", tag="6")]
116 pub status: i32,
117 #[prost(enumeration="ChannelSkipReason", tag="7")]
119 pub skip_reason: i32,
120 #[prost(string, tag="8")]
122 pub provider_message_id: ::prost::alloc::string::String,
123 #[prost(int64, tag="9")]
126 pub cost_micros: i64,
127 #[prost(string, tag="10")]
130 pub metadata_json: ::prost::alloc::string::String,
131 #[prost(message, optional, tag="11")]
132 pub occurred_at: ::core::option::Option<::prost_types::Timestamp>,
133}
134#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
135pub struct RecordChannelEventRequest {
136 #[prost(message, optional, tag="1")]
137 pub event: ::core::option::Option<ChannelEvent>,
138}
139#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
140pub struct RecordChannelEventResponse {
141 #[prost(bool, tag="1")]
144 pub accepted: bool,
145 #[prost(string, tag="2")]
148 pub reason: ::prost::alloc::string::String,
149}
150#[derive(Clone, PartialEq, ::prost::Message)]
151pub struct RecordChannelEventBatchRequest {
152 #[prost(message, repeated, tag="1")]
153 pub events: ::prost::alloc::vec::Vec<ChannelEvent>,
154}
155#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
157pub struct RecordChannelEventBatchResult {
158 #[prost(bool, tag="1")]
159 pub accepted: bool,
160 #[prost(string, tag="2")]
161 pub reason: ::prost::alloc::string::String,
162}
163#[derive(Clone, PartialEq, ::prost::Message)]
164pub struct RecordChannelEventBatchResponse {
165 #[prost(message, repeated, tag="1")]
166 pub results: ::prost::alloc::vec::Vec<RecordChannelEventBatchResult>,
167}
168#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
177#[repr(i32)]
178pub enum ChannelName {
179 Unspecified = 0,
180 Email = 1,
181 Webhook = 2,
182 Telegram = 3,
183 Slack = 4,
184 Sms = 5,
185 Whatsapp = 6,
186 MicrosoftTeams = 7,
187 Line = 8,
188}
189impl ChannelName {
190 pub fn as_str_name(&self) -> &'static str {
195 match self {
196 Self::Unspecified => "CHANNEL_NAME_UNSPECIFIED",
197 Self::Email => "CHANNEL_NAME_EMAIL",
198 Self::Webhook => "CHANNEL_NAME_WEBHOOK",
199 Self::Telegram => "CHANNEL_NAME_TELEGRAM",
200 Self::Slack => "CHANNEL_NAME_SLACK",
201 Self::Sms => "CHANNEL_NAME_SMS",
202 Self::Whatsapp => "CHANNEL_NAME_WHATSAPP",
203 Self::MicrosoftTeams => "CHANNEL_NAME_MICROSOFT_TEAMS",
204 Self::Line => "CHANNEL_NAME_LINE",
205 }
206 }
207 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
209 match value {
210 "CHANNEL_NAME_UNSPECIFIED" => Some(Self::Unspecified),
211 "CHANNEL_NAME_EMAIL" => Some(Self::Email),
212 "CHANNEL_NAME_WEBHOOK" => Some(Self::Webhook),
213 "CHANNEL_NAME_TELEGRAM" => Some(Self::Telegram),
214 "CHANNEL_NAME_SLACK" => Some(Self::Slack),
215 "CHANNEL_NAME_SMS" => Some(Self::Sms),
216 "CHANNEL_NAME_WHATSAPP" => Some(Self::Whatsapp),
217 "CHANNEL_NAME_MICROSOFT_TEAMS" => Some(Self::MicrosoftTeams),
218 "CHANNEL_NAME_LINE" => Some(Self::Line),
219 _ => None,
220 }
221 }
222}
223#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
227#[repr(i32)]
228pub enum ChannelStepKind {
229 Unspecified = 0,
230 Reminder = 1,
231 Escalation = 2,
232}
233impl ChannelStepKind {
234 pub fn as_str_name(&self) -> &'static str {
239 match self {
240 Self::Unspecified => "CHANNEL_STEP_KIND_UNSPECIFIED",
241 Self::Reminder => "CHANNEL_STEP_KIND_REMINDER",
242 Self::Escalation => "CHANNEL_STEP_KIND_ESCALATION",
243 }
244 }
245 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
247 match value {
248 "CHANNEL_STEP_KIND_UNSPECIFIED" => Some(Self::Unspecified),
249 "CHANNEL_STEP_KIND_REMINDER" => Some(Self::Reminder),
250 "CHANNEL_STEP_KIND_ESCALATION" => Some(Self::Escalation),
251 _ => None,
252 }
253 }
254}
255#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
259#[repr(i32)]
260pub enum ChannelEventStatus {
261 Unspecified = 0,
262 Sent = 1,
263 Delivered = 2,
264 Opened = 3,
265 Clicked = 4,
266 Bounced = 5,
267 Failed = 6,
268 Skipped = 7,
269}
270impl ChannelEventStatus {
271 pub fn as_str_name(&self) -> &'static str {
276 match self {
277 Self::Unspecified => "CHANNEL_EVENT_STATUS_UNSPECIFIED",
278 Self::Sent => "CHANNEL_EVENT_STATUS_SENT",
279 Self::Delivered => "CHANNEL_EVENT_STATUS_DELIVERED",
280 Self::Opened => "CHANNEL_EVENT_STATUS_OPENED",
281 Self::Clicked => "CHANNEL_EVENT_STATUS_CLICKED",
282 Self::Bounced => "CHANNEL_EVENT_STATUS_BOUNCED",
283 Self::Failed => "CHANNEL_EVENT_STATUS_FAILED",
284 Self::Skipped => "CHANNEL_EVENT_STATUS_SKIPPED",
285 }
286 }
287 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
289 match value {
290 "CHANNEL_EVENT_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
291 "CHANNEL_EVENT_STATUS_SENT" => Some(Self::Sent),
292 "CHANNEL_EVENT_STATUS_DELIVERED" => Some(Self::Delivered),
293 "CHANNEL_EVENT_STATUS_OPENED" => Some(Self::Opened),
294 "CHANNEL_EVENT_STATUS_CLICKED" => Some(Self::Clicked),
295 "CHANNEL_EVENT_STATUS_BOUNCED" => Some(Self::Bounced),
296 "CHANNEL_EVENT_STATUS_FAILED" => Some(Self::Failed),
297 "CHANNEL_EVENT_STATUS_SKIPPED" => Some(Self::Skipped),
298 _ => None,
299 }
300 }
301}
302#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
305#[repr(i32)]
306pub enum ChannelSkipReason {
307 Unspecified = 0,
308 OptedOut = 1,
309 RegionBlocked = 2,
310 CostCapExceeded = 3,
311 NoIdentifier = 4,
312}
313impl ChannelSkipReason {
314 pub fn as_str_name(&self) -> &'static str {
319 match self {
320 Self::Unspecified => "CHANNEL_SKIP_REASON_UNSPECIFIED",
321 Self::OptedOut => "CHANNEL_SKIP_REASON_OPTED_OUT",
322 Self::RegionBlocked => "CHANNEL_SKIP_REASON_REGION_BLOCKED",
323 Self::CostCapExceeded => "CHANNEL_SKIP_REASON_COST_CAP_EXCEEDED",
324 Self::NoIdentifier => "CHANNEL_SKIP_REASON_NO_IDENTIFIER",
325 }
326 }
327 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
329 match value {
330 "CHANNEL_SKIP_REASON_UNSPECIFIED" => Some(Self::Unspecified),
331 "CHANNEL_SKIP_REASON_OPTED_OUT" => Some(Self::OptedOut),
332 "CHANNEL_SKIP_REASON_REGION_BLOCKED" => Some(Self::RegionBlocked),
333 "CHANNEL_SKIP_REASON_COST_CAP_EXCEEDED" => Some(Self::CostCapExceeded),
334 "CHANNEL_SKIP_REASON_NO_IDENTIFIER" => Some(Self::NoIdentifier),
335 _ => None,
336 }
337 }
338}
339#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
341pub struct Role {
342 #[prost(string, tag="1")]
344 pub id: ::prost::alloc::string::String,
345 #[prost(string, tag="2")]
347 pub slug: ::prost::alloc::string::String,
348 #[prost(string, tag="3")]
350 pub name: ::prost::alloc::string::String,
351 #[prost(bool, tag="4")]
353 pub is_default: bool,
354 #[prost(enumeration="Permission", repeated, tag="5")]
356 pub permissions: ::prost::alloc::vec::Vec<i32>,
357 #[prost(bool, tag="6")]
359 pub is_system: bool,
360}
361#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
365pub struct Pagination {
366 #[prost(int32, tag="1")]
368 pub page_size: i32,
369 #[prost(string, tag="2")]
371 pub page_token: ::prost::alloc::string::String,
372}
373#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
375pub struct PaginationMeta {
376 #[prost(string, tag="1")]
378 pub next_page_token: ::prost::alloc::string::String,
379 #[prost(int32, tag="2")]
381 pub total_count: i32,
382}
383#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
387pub struct MessageAction {
388 #[prost(string, tag="1")]
390 pub id: ::prost::alloc::string::String,
391 #[prost(enumeration="ActionType", tag="2")]
393 pub r#type: i32,
394 #[prost(string, tag="3")]
397 pub label: ::prost::alloc::string::String,
398}
399#[derive(Clone, PartialEq, ::prost::Message)]
402pub struct Message {
403 #[prost(string, tag="1")]
405 pub content_id: ::prost::alloc::string::String,
406 #[prost(string, tag="2")]
408 pub campaign_id: ::prost::alloc::string::String,
409 #[prost(string, tag="3")]
412 pub sender_name: ::prost::alloc::string::String,
413 #[prost(string, tag="4")]
416 pub summary: ::prost::alloc::string::String,
417 #[prost(string, tag="5")]
420 pub preview: ::prost::alloc::string::String,
421 #[prost(string, tag="6")]
424 pub body: ::prost::alloc::string::String,
425 #[prost(bool, tag="7")]
427 pub critical: bool,
428 #[prost(message, repeated, tag="8")]
430 pub actions: ::prost::alloc::vec::Vec<MessageAction>,
431 #[prost(message, optional, tag="9")]
433 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
434 #[prost(string, tag="10")]
437 pub title: ::prost::alloc::string::String,
438}
439#[derive(Clone, PartialEq, ::prost::Message)]
445pub struct WorkflowDefinition {
446 #[prost(message, repeated, tag="1")]
449 pub steps: ::prost::alloc::vec::Vec<WorkflowStep>,
450}
451#[derive(Clone, PartialEq, ::prost::Message)]
453pub struct WorkflowStep {
454 #[prost(string, tag="1")]
456 pub id: ::prost::alloc::string::String,
457 #[prost(enumeration="StepType", tag="2")]
459 pub r#type: i32,
460 #[prost(map="string, string", tag="7")]
463 pub transitions: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
464 #[prost(oneof="workflow_step::Config", tags="3, 4, 5, 6, 8")]
466 pub config: ::core::option::Option<workflow_step::Config>,
467}
468pub mod workflow_step {
470 #[derive(Clone, PartialEq, ::prost::Oneof)]
472 pub enum Config {
473 #[prost(message, tag="3")]
475 SendNotification(super::SendNotificationConfig),
476 #[prost(message, tag="4")]
478 DeadlineCheck(super::DeadlineCheckConfig),
479 #[prost(message, tag="5")]
481 SendReminder(super::SendReminderConfig),
482 #[prost(message, tag="6")]
484 CallWebhook(super::CallWebhookConfig),
485 #[prost(message, tag="8")]
487 EscalateConfig(super::EscalateConfig),
488 }
489}
490#[derive(Clone, PartialEq, ::prost::Message)]
492pub struct SendNotificationConfig {
493 #[prost(string, tag="1")]
496 pub r#type: ::prost::alloc::string::String,
497 #[prost(string, tag="2")]
501 pub template_id: ::prost::alloc::string::String,
502 #[prost(int32, tag="3")]
505 pub template_version: i32,
506 #[prost(string, tag="4")]
509 pub action_label: ::prost::alloc::string::String,
510 #[prost(enumeration="ActionType", tag="5")]
512 pub action_type: i32,
513 #[prost(map="string, string", tag="6")]
516 pub custom_variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
517}
518#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
522pub struct DeadlineCheckConfig {
523 #[prost(string, tag="1")]
526 pub delay: ::prost::alloc::string::String,
527}
528#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
530pub struct SendReminderConfig {
531 #[prost(string, tag="1")]
534 pub r#type: ::prost::alloc::string::String,
535 #[prost(enumeration="ChannelName", repeated, tag="4")]
542 pub third_party_channels: ::prost::alloc::vec::Vec<i32>,
543}
544#[derive(Clone, PartialEq, ::prost::Message)]
546pub struct CallWebhookConfig {
547 #[prost(string, tag="1")]
550 pub name: ::prost::alloc::string::String,
551 #[prost(string, tag="2")]
556 pub url: ::prost::alloc::string::String,
557 #[prost(map="string, string", tag="3")]
560 pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
561}
562#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
564pub struct EscalationTarget {
565 #[prost(enumeration="EscalationTargetType", tag="1")]
567 pub r#type: i32,
568 #[prost(string, tag="2")]
571 pub target_id: ::prost::alloc::string::String,
572}
573#[derive(Clone, PartialEq, ::prost::Message)]
575pub struct EscalateConfig {
576 #[prost(enumeration="EscalationCondition", tag="1")]
578 pub condition: i32,
579 #[prost(message, repeated, tag="2")]
581 pub targets: ::prost::alloc::vec::Vec<EscalationTarget>,
582 #[prost(int32, tag="3")]
585 pub repeat_count: i32,
586 #[prost(int32, tag="4")]
588 pub repeat_interval_minutes: i32,
589 #[prost(enumeration="EscalateMode", tag="5")]
591 pub mode: i32,
592 #[prost(enumeration="ChannelName", repeated, tag="6")]
600 pub third_party_channels: ::prost::alloc::vec::Vec<i32>,
601}
602#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
606#[repr(i32)]
607pub enum CampaignStatus {
608 Unspecified = 0,
610 Created = 1,
612 Running = 2,
614 Completed = 3,
616 Failed = 4,
618 Cancelled = 5,
620}
621impl CampaignStatus {
622 pub fn as_str_name(&self) -> &'static str {
627 match self {
628 Self::Unspecified => "CAMPAIGN_STATUS_UNSPECIFIED",
629 Self::Created => "CAMPAIGN_STATUS_CREATED",
630 Self::Running => "CAMPAIGN_STATUS_RUNNING",
631 Self::Completed => "CAMPAIGN_STATUS_COMPLETED",
632 Self::Failed => "CAMPAIGN_STATUS_FAILED",
633 Self::Cancelled => "CAMPAIGN_STATUS_CANCELLED",
634 }
635 }
636 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
638 match value {
639 "CAMPAIGN_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
640 "CAMPAIGN_STATUS_CREATED" => Some(Self::Created),
641 "CAMPAIGN_STATUS_RUNNING" => Some(Self::Running),
642 "CAMPAIGN_STATUS_COMPLETED" => Some(Self::Completed),
643 "CAMPAIGN_STATUS_FAILED" => Some(Self::Failed),
644 "CAMPAIGN_STATUS_CANCELLED" => Some(Self::Cancelled),
645 _ => None,
646 }
647 }
648}
649#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
651#[repr(i32)]
652pub enum DeliveryStatus {
653 Unspecified = 0,
655 Pending = 1,
657 Sent = 2,
659 Delivered = 3,
661 Acknowledged = 4,
663 Missed = 5,
665 NoDevice = 6,
667 Failed = 7,
669}
670impl DeliveryStatus {
671 pub fn as_str_name(&self) -> &'static str {
676 match self {
677 Self::Unspecified => "DELIVERY_STATUS_UNSPECIFIED",
678 Self::Pending => "DELIVERY_STATUS_PENDING",
679 Self::Sent => "DELIVERY_STATUS_SENT",
680 Self::Delivered => "DELIVERY_STATUS_DELIVERED",
681 Self::Acknowledged => "DELIVERY_STATUS_ACKNOWLEDGED",
682 Self::Missed => "DELIVERY_STATUS_MISSED",
683 Self::NoDevice => "DELIVERY_STATUS_NO_DEVICE",
684 Self::Failed => "DELIVERY_STATUS_FAILED",
685 }
686 }
687 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
689 match value {
690 "DELIVERY_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
691 "DELIVERY_STATUS_PENDING" => Some(Self::Pending),
692 "DELIVERY_STATUS_SENT" => Some(Self::Sent),
693 "DELIVERY_STATUS_DELIVERED" => Some(Self::Delivered),
694 "DELIVERY_STATUS_ACKNOWLEDGED" => Some(Self::Acknowledged),
695 "DELIVERY_STATUS_MISSED" => Some(Self::Missed),
696 "DELIVERY_STATUS_NO_DEVICE" => Some(Self::NoDevice),
697 "DELIVERY_STATUS_FAILED" => Some(Self::Failed),
698 _ => None,
699 }
700 }
701}
702#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
704#[repr(i32)]
705pub enum Platform {
706 Unspecified = 0,
708 Ios = 1,
710 Android = 2,
712}
713impl Platform {
714 pub fn as_str_name(&self) -> &'static str {
719 match self {
720 Self::Unspecified => "PLATFORM_UNSPECIFIED",
721 Self::Ios => "PLATFORM_IOS",
722 Self::Android => "PLATFORM_ANDROID",
723 }
724 }
725 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
727 match value {
728 "PLATFORM_UNSPECIFIED" => Some(Self::Unspecified),
729 "PLATFORM_IOS" => Some(Self::Ios),
730 "PLATFORM_ANDROID" => Some(Self::Android),
731 _ => None,
732 }
733 }
734}
735#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
740#[repr(i32)]
741pub enum Permission {
742 Unspecified = 0,
744 OrgRead = 1,
746 OrgWrite = 2,
748 MembersRead = 3,
750 MembersInvite = 4,
752 MembersManage = 5,
754 CampaignsRead = 6,
756 CampaignsWrite = 7,
758 CampaignsStart = 8,
760 TemplatesRead = 9,
762 TemplatesWrite = 10,
764 InboxRead = 11,
766 InboxAct = 12,
768 GroupsAllRead = 13,
770 GroupsWrite = 14,
772 GroupsAllWrite = 15,
774 TeamsAllRead = 16,
776 TeamsWrite = 17,
778 TeamsAllWrite = 18,
780 PrivacyRead = 19,
782 PrivacyWrite = 20,
784 AuditRead = 21,
786 TemplatesReview = 22,
788 PlatformSupport = 23,
791 PlatformAccessCodes = 24,
794 PlatformProvision = 25,
797}
798impl Permission {
799 pub fn as_str_name(&self) -> &'static str {
804 match self {
805 Self::Unspecified => "PERMISSION_UNSPECIFIED",
806 Self::OrgRead => "PERMISSION_ORG_READ",
807 Self::OrgWrite => "PERMISSION_ORG_WRITE",
808 Self::MembersRead => "PERMISSION_MEMBERS_READ",
809 Self::MembersInvite => "PERMISSION_MEMBERS_INVITE",
810 Self::MembersManage => "PERMISSION_MEMBERS_MANAGE",
811 Self::CampaignsRead => "PERMISSION_CAMPAIGNS_READ",
812 Self::CampaignsWrite => "PERMISSION_CAMPAIGNS_WRITE",
813 Self::CampaignsStart => "PERMISSION_CAMPAIGNS_START",
814 Self::TemplatesRead => "PERMISSION_TEMPLATES_READ",
815 Self::TemplatesWrite => "PERMISSION_TEMPLATES_WRITE",
816 Self::InboxRead => "PERMISSION_INBOX_READ",
817 Self::InboxAct => "PERMISSION_INBOX_ACT",
818 Self::GroupsAllRead => "PERMISSION_GROUPS_ALL_READ",
819 Self::GroupsWrite => "PERMISSION_GROUPS_WRITE",
820 Self::GroupsAllWrite => "PERMISSION_GROUPS_ALL_WRITE",
821 Self::TeamsAllRead => "PERMISSION_TEAMS_ALL_READ",
822 Self::TeamsWrite => "PERMISSION_TEAMS_WRITE",
823 Self::TeamsAllWrite => "PERMISSION_TEAMS_ALL_WRITE",
824 Self::PrivacyRead => "PERMISSION_PRIVACY_READ",
825 Self::PrivacyWrite => "PERMISSION_PRIVACY_WRITE",
826 Self::AuditRead => "PERMISSION_AUDIT_READ",
827 Self::TemplatesReview => "PERMISSION_TEMPLATES_REVIEW",
828 Self::PlatformSupport => "PERMISSION_PLATFORM_SUPPORT",
829 Self::PlatformAccessCodes => "PERMISSION_PLATFORM_ACCESS_CODES",
830 Self::PlatformProvision => "PERMISSION_PLATFORM_PROVISION",
831 }
832 }
833 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
835 match value {
836 "PERMISSION_UNSPECIFIED" => Some(Self::Unspecified),
837 "PERMISSION_ORG_READ" => Some(Self::OrgRead),
838 "PERMISSION_ORG_WRITE" => Some(Self::OrgWrite),
839 "PERMISSION_MEMBERS_READ" => Some(Self::MembersRead),
840 "PERMISSION_MEMBERS_INVITE" => Some(Self::MembersInvite),
841 "PERMISSION_MEMBERS_MANAGE" => Some(Self::MembersManage),
842 "PERMISSION_CAMPAIGNS_READ" => Some(Self::CampaignsRead),
843 "PERMISSION_CAMPAIGNS_WRITE" => Some(Self::CampaignsWrite),
844 "PERMISSION_CAMPAIGNS_START" => Some(Self::CampaignsStart),
845 "PERMISSION_TEMPLATES_READ" => Some(Self::TemplatesRead),
846 "PERMISSION_TEMPLATES_WRITE" => Some(Self::TemplatesWrite),
847 "PERMISSION_INBOX_READ" => Some(Self::InboxRead),
848 "PERMISSION_INBOX_ACT" => Some(Self::InboxAct),
849 "PERMISSION_GROUPS_ALL_READ" => Some(Self::GroupsAllRead),
850 "PERMISSION_GROUPS_WRITE" => Some(Self::GroupsWrite),
851 "PERMISSION_GROUPS_ALL_WRITE" => Some(Self::GroupsAllWrite),
852 "PERMISSION_TEAMS_ALL_READ" => Some(Self::TeamsAllRead),
853 "PERMISSION_TEAMS_WRITE" => Some(Self::TeamsWrite),
854 "PERMISSION_TEAMS_ALL_WRITE" => Some(Self::TeamsAllWrite),
855 "PERMISSION_PRIVACY_READ" => Some(Self::PrivacyRead),
856 "PERMISSION_PRIVACY_WRITE" => Some(Self::PrivacyWrite),
857 "PERMISSION_AUDIT_READ" => Some(Self::AuditRead),
858 "PERMISSION_TEMPLATES_REVIEW" => Some(Self::TemplatesReview),
859 "PERMISSION_PLATFORM_SUPPORT" => Some(Self::PlatformSupport),
860 "PERMISSION_PLATFORM_ACCESS_CODES" => Some(Self::PlatformAccessCodes),
861 "PERMISSION_PLATFORM_PROVISION" => Some(Self::PlatformProvision),
862 _ => None,
863 }
864 }
865}
866#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
868#[repr(i32)]
869pub enum ActionType {
870 Unspecified = 0,
872 Ack = 1,
874}
875impl ActionType {
876 pub fn as_str_name(&self) -> &'static str {
881 match self {
882 Self::Unspecified => "ACTION_TYPE_UNSPECIFIED",
883 Self::Ack => "ACTION_TYPE_ACK",
884 }
885 }
886 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
888 match value {
889 "ACTION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
890 "ACTION_TYPE_ACK" => Some(Self::Ack),
891 _ => None,
892 }
893 }
894}
895#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
897#[repr(i32)]
898pub enum StepType {
899 Unspecified = 0,
901 SendNotification = 1,
903 DeadlineCheck = 2,
905 SendReminder = 3,
907 CallWebhook = 4,
909 MarkMissed = 5,
911 Escalate = 6,
913}
914impl StepType {
915 pub fn as_str_name(&self) -> &'static str {
920 match self {
921 Self::Unspecified => "STEP_TYPE_UNSPECIFIED",
922 Self::SendNotification => "STEP_TYPE_SEND_NOTIFICATION",
923 Self::DeadlineCheck => "STEP_TYPE_DEADLINE_CHECK",
924 Self::SendReminder => "STEP_TYPE_SEND_REMINDER",
925 Self::CallWebhook => "STEP_TYPE_CALL_WEBHOOK",
926 Self::MarkMissed => "STEP_TYPE_MARK_MISSED",
927 Self::Escalate => "STEP_TYPE_ESCALATE",
928 }
929 }
930 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
932 match value {
933 "STEP_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
934 "STEP_TYPE_SEND_NOTIFICATION" => Some(Self::SendNotification),
935 "STEP_TYPE_DEADLINE_CHECK" => Some(Self::DeadlineCheck),
936 "STEP_TYPE_SEND_REMINDER" => Some(Self::SendReminder),
937 "STEP_TYPE_CALL_WEBHOOK" => Some(Self::CallWebhook),
938 "STEP_TYPE_MARK_MISSED" => Some(Self::MarkMissed),
939 "STEP_TYPE_ESCALATE" => Some(Self::Escalate),
940 _ => None,
941 }
942 }
943}
944#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
946#[repr(i32)]
947pub enum EscalationCondition {
948 Unspecified = 0,
949 IfNotAcked = 1,
951 IfNotClosed = 2,
953}
954impl EscalationCondition {
955 pub fn as_str_name(&self) -> &'static str {
960 match self {
961 Self::Unspecified => "ESCALATION_CONDITION_UNSPECIFIED",
962 Self::IfNotAcked => "ESCALATION_CONDITION_IF_NOT_ACKED",
963 Self::IfNotClosed => "ESCALATION_CONDITION_IF_NOT_CLOSED",
964 }
965 }
966 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
968 match value {
969 "ESCALATION_CONDITION_UNSPECIFIED" => Some(Self::Unspecified),
970 "ESCALATION_CONDITION_IF_NOT_ACKED" => Some(Self::IfNotAcked),
971 "ESCALATION_CONDITION_IF_NOT_CLOSED" => Some(Self::IfNotClosed),
972 _ => None,
973 }
974 }
975}
976#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
978#[repr(i32)]
979pub enum EscalationTargetType {
980 Unspecified = 0,
981 User = 1,
983 Group = 2,
985 Manager = 3,
987 Role = 4,
989}
990impl EscalationTargetType {
991 pub fn as_str_name(&self) -> &'static str {
996 match self {
997 Self::Unspecified => "ESCALATION_TARGET_TYPE_UNSPECIFIED",
998 Self::User => "ESCALATION_TARGET_TYPE_USER",
999 Self::Group => "ESCALATION_TARGET_TYPE_GROUP",
1000 Self::Manager => "ESCALATION_TARGET_TYPE_MANAGER",
1001 Self::Role => "ESCALATION_TARGET_TYPE_ROLE",
1002 }
1003 }
1004 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1006 match value {
1007 "ESCALATION_TARGET_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1008 "ESCALATION_TARGET_TYPE_USER" => Some(Self::User),
1009 "ESCALATION_TARGET_TYPE_GROUP" => Some(Self::Group),
1010 "ESCALATION_TARGET_TYPE_MANAGER" => Some(Self::Manager),
1011 "ESCALATION_TARGET_TYPE_ROLE" => Some(Self::Role),
1012 _ => None,
1013 }
1014 }
1015}
1016#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1018#[repr(i32)]
1019pub enum EscalateMode {
1020 Unspecified = 0,
1022 Deliver = 1,
1024 AlertOnly = 2,
1026}
1027impl EscalateMode {
1028 pub fn as_str_name(&self) -> &'static str {
1033 match self {
1034 Self::Unspecified => "ESCALATE_MODE_UNSPECIFIED",
1035 Self::Deliver => "ESCALATE_MODE_DELIVER",
1036 Self::AlertOnly => "ESCALATE_MODE_ALERT_ONLY",
1037 }
1038 }
1039 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1041 match value {
1042 "ESCALATE_MODE_UNSPECIFIED" => Some(Self::Unspecified),
1043 "ESCALATE_MODE_DELIVER" => Some(Self::Deliver),
1044 "ESCALATE_MODE_ALERT_ONLY" => Some(Self::AlertOnly),
1045 _ => None,
1046 }
1047 }
1048}
1049#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1053pub struct ApiKey {
1054 #[prost(string, tag="1")]
1056 pub id: ::prost::alloc::string::String,
1057 #[prost(string, tag="2")]
1059 pub name: ::prost::alloc::string::String,
1060 #[prost(string, tag="3")]
1063 pub key_prefix: ::prost::alloc::string::String,
1064 #[prost(enumeration="Permission", repeated, tag="4")]
1066 pub permissions: ::prost::alloc::vec::Vec<i32>,
1067 #[prost(message, optional, tag="5")]
1069 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1070 #[prost(message, optional, tag="6")]
1072 pub last_used_at: ::core::option::Option<::prost_types::Timestamp>,
1073 #[prost(message, optional, tag="7")]
1075 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
1076 #[prost(enumeration="KeyType", tag="8")]
1079 pub key_type: i32,
1080}
1081#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1083pub struct CreateApiKeyRequest {
1084 #[prost(string, tag="1")]
1086 pub name: ::prost::alloc::string::String,
1087 #[prost(enumeration="Permission", repeated, tag="2")]
1090 pub permissions: ::prost::alloc::vec::Vec<i32>,
1091 #[prost(message, optional, tag="3")]
1093 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
1094 #[prost(enumeration="KeyType", tag="4")]
1097 pub key_type: i32,
1098}
1099#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1102pub struct CreateApiKeyResponse {
1103 #[prost(message, optional, tag="1")]
1105 pub api_key: ::core::option::Option<ApiKey>,
1106 #[prost(string, tag="2")]
1109 pub key: ::prost::alloc::string::String,
1110}
1111#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1113pub struct ListApiKeysRequest {
1114 #[prost(enumeration="KeyType", tag="1")]
1116 pub key_type: i32,
1117}
1118#[derive(Clone, PartialEq, ::prost::Message)]
1120pub struct ListApiKeysResponse {
1121 #[prost(message, repeated, tag="1")]
1123 pub api_keys: ::prost::alloc::vec::Vec<ApiKey>,
1124}
1125#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1127pub struct RevokeApiKeyRequest {
1128 #[prost(string, tag="1")]
1130 pub api_key_id: ::prost::alloc::string::String,
1131}
1132#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1134pub struct RevokeApiKeyResponse {
1135}
1136#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1140#[repr(i32)]
1141pub enum KeyType {
1142 Unspecified = 0,
1143 ApiKey = 1,
1144 ScimToken = 2,
1145}
1146impl KeyType {
1147 pub fn as_str_name(&self) -> &'static str {
1152 match self {
1153 Self::Unspecified => "KEY_TYPE_UNSPECIFIED",
1154 Self::ApiKey => "KEY_TYPE_API_KEY",
1155 Self::ScimToken => "KEY_TYPE_SCIM_TOKEN",
1156 }
1157 }
1158 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1160 match value {
1161 "KEY_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1162 "KEY_TYPE_API_KEY" => Some(Self::ApiKey),
1163 "KEY_TYPE_SCIM_TOKEN" => Some(Self::ScimToken),
1164 _ => None,
1165 }
1166 }
1167}
1168#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1173pub struct ExportUserDataRequest {
1174 #[prost(string, tag="1")]
1177 pub user_id: ::prost::alloc::string::String,
1178}
1179#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1181pub struct ExportUserDataResponse {
1182 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1184 pub status: i32,
1185 #[prost(string, tag="2")]
1188 pub result_url: ::prost::alloc::string::String,
1189 #[prost(string, tag="3")]
1192 pub export_id: ::prost::alloc::string::String,
1193}
1194#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1197pub struct DeleteUserDataRequest {
1198 #[prost(string, tag="1")]
1201 pub user_id: ::prost::alloc::string::String,
1202 #[prost(bool, tag="2")]
1205 pub anonymize: bool,
1206}
1207#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1209pub struct DeleteUserDataResponse {
1210 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1212 pub status: i32,
1213 #[prost(message, optional, tag="2")]
1216 pub deleted_at: ::core::option::Option<::prost_types::Timestamp>,
1217 #[prost(string, tag="3")]
1219 pub request_id: ::prost::alloc::string::String,
1220}
1221#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1224pub struct ListPrivacyRequestsRequest {
1225 #[prost(int32, tag="1")]
1228 pub page_size: i32,
1229 #[prost(string, tag="2")]
1231 pub page_token: ::prost::alloc::string::String,
1232 #[prost(string, tag="3")]
1234 pub request_type: ::prost::alloc::string::String,
1235 #[prost(enumeration="PrivacyRequestStatus", tag="4")]
1237 pub status: i32,
1238}
1239#[derive(Clone, PartialEq, ::prost::Message)]
1241pub struct ListPrivacyRequestsResponse {
1242 #[prost(message, repeated, tag="1")]
1244 pub requests: ::prost::alloc::vec::Vec<PrivacyRequest>,
1245 #[prost(string, tag="2")]
1247 pub next_page_token: ::prost::alloc::string::String,
1248}
1249#[derive(Clone, PartialEq, ::prost::Message)]
1251pub struct PrivacyRequest {
1252 #[prost(string, tag="1")]
1254 pub id: ::prost::alloc::string::String,
1255 #[prost(string, tag="2")]
1257 pub user_id: ::prost::alloc::string::String,
1258 #[prost(string, tag="3")]
1260 pub user_email: ::prost::alloc::string::String,
1261 #[prost(string, tag="4")]
1263 pub request_type: ::prost::alloc::string::String,
1264 #[prost(enumeration="PrivacyRequestStatus", tag="5")]
1266 pub status: i32,
1267 #[prost(bool, tag="6")]
1269 pub anonymize: bool,
1270 #[prost(string, tag="7")]
1272 pub requested_by_email: ::prost::alloc::string::String,
1273 #[prost(message, optional, tag="8")]
1275 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1276 #[prost(message, optional, tag="9")]
1278 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
1279 #[prost(map="string, string", tag="10")]
1281 pub metadata: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1282}
1283#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1286pub struct CancelDeletionRequest {
1287 #[prost(string, tag="1")]
1289 pub request_id: ::prost::alloc::string::String,
1290 #[prost(string, tag="2")]
1292 pub confirmation_email: ::prost::alloc::string::String,
1293}
1294#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1296pub struct CancelDeletionResponse {
1297 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1299 pub status: i32,
1300}
1301#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1304pub struct ImmediateDeleteRequest {
1305 #[prost(string, tag="1")]
1307 pub request_id: ::prost::alloc::string::String,
1308 #[prost(string, tag="2")]
1310 pub confirmation_email: ::prost::alloc::string::String,
1311}
1312#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1314pub struct ImmediateDeleteResponse {
1315 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1317 pub status: i32,
1318}
1319#[derive(Clone, PartialEq, ::prost::Message)]
1322pub struct RectifyUserDataRequest {
1323 #[prost(string, tag="1")]
1326 pub user_id: ::prost::alloc::string::String,
1327 #[prost(map="string, string", tag="2")]
1331 pub corrections: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1332}
1333#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1335pub struct RectifyUserDataResponse {
1336 #[prost(string, repeated, tag="1")]
1338 pub rectified_fields: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1339}
1340#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1343pub struct RestrictProcessingRequest {
1344 #[prost(string, tag="1")]
1347 pub user_id: ::prost::alloc::string::String,
1348 #[prost(bool, tag="2")]
1350 pub restricted: bool,
1351}
1352#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1354pub struct RestrictProcessingResponse {
1355 #[prost(bool, tag="1")]
1357 pub restricted: bool,
1358 #[prost(message, optional, tag="2")]
1360 pub restricted_at: ::core::option::Option<::prost_types::Timestamp>,
1361}
1362#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1366pub struct GetDataExistenceConfirmationRequest {
1367 #[prost(string, tag="1")]
1370 pub user_id: ::prost::alloc::string::String,
1371}
1372#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1374pub struct GetDataExistenceConfirmationResponse {
1375 #[prost(bool, tag="1")]
1377 pub exists: bool,
1378 #[prost(string, repeated, tag="2")]
1380 pub data_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1381}
1382#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1385pub struct ListMyPrivacyRequestsRequest {
1386 #[prost(int32, tag="1")]
1389 pub page_size: i32,
1390 #[prost(string, tag="2")]
1392 pub page_token: ::prost::alloc::string::String,
1393 #[prost(string, tag="3")]
1395 pub request_type: ::prost::alloc::string::String,
1396 #[prost(enumeration="PrivacyRequestStatus", tag="4")]
1398 pub status: i32,
1399}
1400#[derive(Clone, PartialEq, ::prost::Message)]
1402pub struct ListMyPrivacyRequestsResponse {
1403 #[prost(message, repeated, tag="1")]
1405 pub requests: ::prost::alloc::vec::Vec<PrivacyRequest>,
1406 #[prost(string, tag="2")]
1408 pub next_page_token: ::prost::alloc::string::String,
1409}
1410#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1414#[repr(i32)]
1415pub enum PrivacyRequestStatus {
1416 Unspecified = 0,
1418 Pending = 1,
1420 Processing = 2,
1422 Completed = 3,
1424 Failed = 4,
1426}
1427impl PrivacyRequestStatus {
1428 pub fn as_str_name(&self) -> &'static str {
1433 match self {
1434 Self::Unspecified => "PRIVACY_REQUEST_STATUS_UNSPECIFIED",
1435 Self::Pending => "PRIVACY_REQUEST_STATUS_PENDING",
1436 Self::Processing => "PRIVACY_REQUEST_STATUS_PROCESSING",
1437 Self::Completed => "PRIVACY_REQUEST_STATUS_COMPLETED",
1438 Self::Failed => "PRIVACY_REQUEST_STATUS_FAILED",
1439 }
1440 }
1441 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1443 match value {
1444 "PRIVACY_REQUEST_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1445 "PRIVACY_REQUEST_STATUS_PENDING" => Some(Self::Pending),
1446 "PRIVACY_REQUEST_STATUS_PROCESSING" => Some(Self::Processing),
1447 "PRIVACY_REQUEST_STATUS_COMPLETED" => Some(Self::Completed),
1448 "PRIVACY_REQUEST_STATUS_FAILED" => Some(Self::Failed),
1449 _ => None,
1450 }
1451 }
1452}
1453#[derive(Clone, PartialEq, ::prost::Message)]
1458pub struct AuditEvent {
1459 #[prost(string, tag="1")]
1462 pub id: ::prost::alloc::string::String,
1463 #[prost(string, tag="2")]
1466 pub org_id: ::prost::alloc::string::String,
1467 #[prost(string, tag="3")]
1470 pub actor_id: ::prost::alloc::string::String,
1471 #[prost(enumeration="AuditEventType", tag="4")]
1473 pub event_type: i32,
1474 #[prost(string, tag="5")]
1477 pub entity_type: ::prost::alloc::string::String,
1478 #[prost(string, tag="6")]
1481 pub entity_id: ::prost::alloc::string::String,
1482 #[prost(map="string, string", tag="7")]
1485 pub metadata: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1486 #[prost(message, optional, tag="10")]
1488 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1489}
1490#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1493pub struct ListAuditEventsRequest {
1494 #[prost(string, tag="1")]
1496 pub page_token: ::prost::alloc::string::String,
1497 #[prost(int32, tag="2")]
1500 pub page_size: i32,
1501 #[prost(enumeration="AuditEventType", tag="3")]
1503 pub event_type: i32,
1504 #[prost(string, tag="4")]
1507 pub actor_id: ::prost::alloc::string::String,
1508 #[prost(message, optional, tag="5")]
1510 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
1511 #[prost(message, optional, tag="6")]
1513 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
1514}
1515#[derive(Clone, PartialEq, ::prost::Message)]
1517pub struct ListAuditEventsResponse {
1518 #[prost(message, repeated, tag="1")]
1520 pub events: ::prost::alloc::vec::Vec<AuditEvent>,
1521 #[prost(string, tag="2")]
1523 pub next_page_token: ::prost::alloc::string::String,
1524}
1525#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1528pub struct ExportAuditTrailRequest {
1529 #[prost(enumeration="AuditExportFormat", tag="1")]
1531 pub format: i32,
1532 #[prost(message, optional, tag="2")]
1534 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
1535 #[prost(message, optional, tag="3")]
1537 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
1538}
1539#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1541pub struct ExportAuditTrailResponse {
1542 #[prost(string, tag="1")]
1545 pub export_url: ::prost::alloc::string::String,
1546 #[prost(enumeration="PrivacyRequestStatus", tag="2")]
1548 pub status: i32,
1549}
1550#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1552pub struct AuditExport {
1553 #[prost(string, tag="1")]
1555 pub id: ::prost::alloc::string::String,
1556 #[prost(string, tag="2")]
1558 pub format: ::prost::alloc::string::String,
1559 #[prost(enumeration="PrivacyRequestStatus", tag="3")]
1561 pub status: i32,
1562 #[prost(string, tag="4")]
1564 pub result_url: ::prost::alloc::string::String,
1565 #[prost(string, tag="5")]
1567 pub error_message: ::prost::alloc::string::String,
1568 #[prost(string, tag="6")]
1570 pub requested_by_email: ::prost::alloc::string::String,
1571 #[prost(message, optional, tag="7")]
1573 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1574 #[prost(message, optional, tag="8")]
1576 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
1577}
1578#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1581pub struct ListAuditExportsRequest {
1582}
1583#[derive(Clone, PartialEq, ::prost::Message)]
1585pub struct ListAuditExportsResponse {
1586 #[prost(message, repeated, tag="1")]
1588 pub exports: ::prost::alloc::vec::Vec<AuditExport>,
1589}
1590#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1594#[repr(i32)]
1595pub enum AuditEventType {
1596 Unspecified = 0,
1598 CampaignCreated = 1,
1601 MessageSent = 2,
1603 MessageOpened = 3,
1605 AckRegistered = 4,
1607 EscalationExecuted = 5,
1609 CampaignStarted = 12,
1611 CampaignCancelled = 13,
1613 CampaignUpdated = 14,
1615 UserInvited = 6,
1618 UserDeactivated = 7,
1620 UserReactivated = 15,
1622 RoleChanged = 10,
1624 InviteRevoked = 16,
1626 ProfileUpdated = 17,
1628 SettingsUpdated = 18,
1630 PasskeyEnrolled = 19,
1632 DataExportRequested = 8,
1635 DataDeletionRequested = 9,
1637 DataRectified = 20,
1639 ProcessingRestricted = 21,
1641 DeletionCancelled = 22,
1643 DeletionImmediate = 23,
1645 SsoConfigured = 11,
1648 SsoProviderCreated = 24,
1650 SsoProviderDeleted = 25,
1652 OrgUpdated = 26,
1654 RoleCreated = 27,
1657 RoleUpdated = 28,
1659 RoleDeleted = 29,
1661 TemplateCreated = 30,
1664 TemplateUpdated = 31,
1666 ApiKeyCreated = 32,
1669 ApiKeyRevoked = 33,
1671 InviteLinkCreated = 34,
1674 InviteLinkRevoked = 35,
1676 GroupCreated = 36,
1679 GroupUpdated = 37,
1681 GroupDeleted = 38,
1683 GroupMembersAdded = 39,
1685 GroupMembersRemoved = 40,
1687 TeamCreated = 41,
1690 TeamUpdated = 42,
1692 TeamDeleted = 43,
1694 TeamMembersAdded = 44,
1696 TeamMembersRemoved = 45,
1698 ScimUserProvisioned = 46,
1701 ScimUserDeprovisioned = 47,
1703 ScimUserUpdated = 48,
1705 TranslationCreated = 49,
1708 TranslationApproved = 50,
1710 SandboxCreated = 51,
1713 SandboxExpired = 52,
1715 AiPredictionLogged = 53,
1718 MlPipelineTriggered = 54,
1720 ArchetypeClusteringTriggered = 55,
1722 OrgCreated = 56,
1725 OrgDeleted = 57,
1727}
1728impl AuditEventType {
1729 pub fn as_str_name(&self) -> &'static str {
1734 match self {
1735 Self::Unspecified => "AUDIT_EVENT_TYPE_UNSPECIFIED",
1736 Self::CampaignCreated => "AUDIT_EVENT_TYPE_CAMPAIGN_CREATED",
1737 Self::MessageSent => "AUDIT_EVENT_TYPE_MESSAGE_SENT",
1738 Self::MessageOpened => "AUDIT_EVENT_TYPE_MESSAGE_OPENED",
1739 Self::AckRegistered => "AUDIT_EVENT_TYPE_ACK_REGISTERED",
1740 Self::EscalationExecuted => "AUDIT_EVENT_TYPE_ESCALATION_EXECUTED",
1741 Self::CampaignStarted => "AUDIT_EVENT_TYPE_CAMPAIGN_STARTED",
1742 Self::CampaignCancelled => "AUDIT_EVENT_TYPE_CAMPAIGN_CANCELLED",
1743 Self::CampaignUpdated => "AUDIT_EVENT_TYPE_CAMPAIGN_UPDATED",
1744 Self::UserInvited => "AUDIT_EVENT_TYPE_USER_INVITED",
1745 Self::UserDeactivated => "AUDIT_EVENT_TYPE_USER_DEACTIVATED",
1746 Self::UserReactivated => "AUDIT_EVENT_TYPE_USER_REACTIVATED",
1747 Self::RoleChanged => "AUDIT_EVENT_TYPE_ROLE_CHANGED",
1748 Self::InviteRevoked => "AUDIT_EVENT_TYPE_INVITE_REVOKED",
1749 Self::ProfileUpdated => "AUDIT_EVENT_TYPE_PROFILE_UPDATED",
1750 Self::SettingsUpdated => "AUDIT_EVENT_TYPE_SETTINGS_UPDATED",
1751 Self::PasskeyEnrolled => "AUDIT_EVENT_TYPE_PASSKEY_ENROLLED",
1752 Self::DataExportRequested => "AUDIT_EVENT_TYPE_DATA_EXPORT_REQUESTED",
1753 Self::DataDeletionRequested => "AUDIT_EVENT_TYPE_DATA_DELETION_REQUESTED",
1754 Self::DataRectified => "AUDIT_EVENT_TYPE_DATA_RECTIFIED",
1755 Self::ProcessingRestricted => "AUDIT_EVENT_TYPE_PROCESSING_RESTRICTED",
1756 Self::DeletionCancelled => "AUDIT_EVENT_TYPE_DELETION_CANCELLED",
1757 Self::DeletionImmediate => "AUDIT_EVENT_TYPE_DELETION_IMMEDIATE",
1758 Self::SsoConfigured => "AUDIT_EVENT_TYPE_SSO_CONFIGURED",
1759 Self::SsoProviderCreated => "AUDIT_EVENT_TYPE_SSO_PROVIDER_CREATED",
1760 Self::SsoProviderDeleted => "AUDIT_EVENT_TYPE_SSO_PROVIDER_DELETED",
1761 Self::OrgUpdated => "AUDIT_EVENT_TYPE_ORG_UPDATED",
1762 Self::RoleCreated => "AUDIT_EVENT_TYPE_ROLE_CREATED",
1763 Self::RoleUpdated => "AUDIT_EVENT_TYPE_ROLE_UPDATED",
1764 Self::RoleDeleted => "AUDIT_EVENT_TYPE_ROLE_DELETED",
1765 Self::TemplateCreated => "AUDIT_EVENT_TYPE_TEMPLATE_CREATED",
1766 Self::TemplateUpdated => "AUDIT_EVENT_TYPE_TEMPLATE_UPDATED",
1767 Self::ApiKeyCreated => "AUDIT_EVENT_TYPE_API_KEY_CREATED",
1768 Self::ApiKeyRevoked => "AUDIT_EVENT_TYPE_API_KEY_REVOKED",
1769 Self::InviteLinkCreated => "AUDIT_EVENT_TYPE_INVITE_LINK_CREATED",
1770 Self::InviteLinkRevoked => "AUDIT_EVENT_TYPE_INVITE_LINK_REVOKED",
1771 Self::GroupCreated => "AUDIT_EVENT_TYPE_GROUP_CREATED",
1772 Self::GroupUpdated => "AUDIT_EVENT_TYPE_GROUP_UPDATED",
1773 Self::GroupDeleted => "AUDIT_EVENT_TYPE_GROUP_DELETED",
1774 Self::GroupMembersAdded => "AUDIT_EVENT_TYPE_GROUP_MEMBERS_ADDED",
1775 Self::GroupMembersRemoved => "AUDIT_EVENT_TYPE_GROUP_MEMBERS_REMOVED",
1776 Self::TeamCreated => "AUDIT_EVENT_TYPE_TEAM_CREATED",
1777 Self::TeamUpdated => "AUDIT_EVENT_TYPE_TEAM_UPDATED",
1778 Self::TeamDeleted => "AUDIT_EVENT_TYPE_TEAM_DELETED",
1779 Self::TeamMembersAdded => "AUDIT_EVENT_TYPE_TEAM_MEMBERS_ADDED",
1780 Self::TeamMembersRemoved => "AUDIT_EVENT_TYPE_TEAM_MEMBERS_REMOVED",
1781 Self::ScimUserProvisioned => "AUDIT_EVENT_TYPE_SCIM_USER_PROVISIONED",
1782 Self::ScimUserDeprovisioned => "AUDIT_EVENT_TYPE_SCIM_USER_DEPROVISIONED",
1783 Self::ScimUserUpdated => "AUDIT_EVENT_TYPE_SCIM_USER_UPDATED",
1784 Self::TranslationCreated => "AUDIT_EVENT_TYPE_TRANSLATION_CREATED",
1785 Self::TranslationApproved => "AUDIT_EVENT_TYPE_TRANSLATION_APPROVED",
1786 Self::SandboxCreated => "AUDIT_EVENT_TYPE_SANDBOX_CREATED",
1787 Self::SandboxExpired => "AUDIT_EVENT_TYPE_SANDBOX_EXPIRED",
1788 Self::AiPredictionLogged => "AUDIT_EVENT_TYPE_AI_PREDICTION_LOGGED",
1789 Self::MlPipelineTriggered => "AUDIT_EVENT_TYPE_ML_PIPELINE_TRIGGERED",
1790 Self::ArchetypeClusteringTriggered => "AUDIT_EVENT_TYPE_ARCHETYPE_CLUSTERING_TRIGGERED",
1791 Self::OrgCreated => "AUDIT_EVENT_TYPE_ORG_CREATED",
1792 Self::OrgDeleted => "AUDIT_EVENT_TYPE_ORG_DELETED",
1793 }
1794 }
1795 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1797 match value {
1798 "AUDIT_EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1799 "AUDIT_EVENT_TYPE_CAMPAIGN_CREATED" => Some(Self::CampaignCreated),
1800 "AUDIT_EVENT_TYPE_MESSAGE_SENT" => Some(Self::MessageSent),
1801 "AUDIT_EVENT_TYPE_MESSAGE_OPENED" => Some(Self::MessageOpened),
1802 "AUDIT_EVENT_TYPE_ACK_REGISTERED" => Some(Self::AckRegistered),
1803 "AUDIT_EVENT_TYPE_ESCALATION_EXECUTED" => Some(Self::EscalationExecuted),
1804 "AUDIT_EVENT_TYPE_CAMPAIGN_STARTED" => Some(Self::CampaignStarted),
1805 "AUDIT_EVENT_TYPE_CAMPAIGN_CANCELLED" => Some(Self::CampaignCancelled),
1806 "AUDIT_EVENT_TYPE_CAMPAIGN_UPDATED" => Some(Self::CampaignUpdated),
1807 "AUDIT_EVENT_TYPE_USER_INVITED" => Some(Self::UserInvited),
1808 "AUDIT_EVENT_TYPE_USER_DEACTIVATED" => Some(Self::UserDeactivated),
1809 "AUDIT_EVENT_TYPE_USER_REACTIVATED" => Some(Self::UserReactivated),
1810 "AUDIT_EVENT_TYPE_ROLE_CHANGED" => Some(Self::RoleChanged),
1811 "AUDIT_EVENT_TYPE_INVITE_REVOKED" => Some(Self::InviteRevoked),
1812 "AUDIT_EVENT_TYPE_PROFILE_UPDATED" => Some(Self::ProfileUpdated),
1813 "AUDIT_EVENT_TYPE_SETTINGS_UPDATED" => Some(Self::SettingsUpdated),
1814 "AUDIT_EVENT_TYPE_PASSKEY_ENROLLED" => Some(Self::PasskeyEnrolled),
1815 "AUDIT_EVENT_TYPE_DATA_EXPORT_REQUESTED" => Some(Self::DataExportRequested),
1816 "AUDIT_EVENT_TYPE_DATA_DELETION_REQUESTED" => Some(Self::DataDeletionRequested),
1817 "AUDIT_EVENT_TYPE_DATA_RECTIFIED" => Some(Self::DataRectified),
1818 "AUDIT_EVENT_TYPE_PROCESSING_RESTRICTED" => Some(Self::ProcessingRestricted),
1819 "AUDIT_EVENT_TYPE_DELETION_CANCELLED" => Some(Self::DeletionCancelled),
1820 "AUDIT_EVENT_TYPE_DELETION_IMMEDIATE" => Some(Self::DeletionImmediate),
1821 "AUDIT_EVENT_TYPE_SSO_CONFIGURED" => Some(Self::SsoConfigured),
1822 "AUDIT_EVENT_TYPE_SSO_PROVIDER_CREATED" => Some(Self::SsoProviderCreated),
1823 "AUDIT_EVENT_TYPE_SSO_PROVIDER_DELETED" => Some(Self::SsoProviderDeleted),
1824 "AUDIT_EVENT_TYPE_ORG_UPDATED" => Some(Self::OrgUpdated),
1825 "AUDIT_EVENT_TYPE_ROLE_CREATED" => Some(Self::RoleCreated),
1826 "AUDIT_EVENT_TYPE_ROLE_UPDATED" => Some(Self::RoleUpdated),
1827 "AUDIT_EVENT_TYPE_ROLE_DELETED" => Some(Self::RoleDeleted),
1828 "AUDIT_EVENT_TYPE_TEMPLATE_CREATED" => Some(Self::TemplateCreated),
1829 "AUDIT_EVENT_TYPE_TEMPLATE_UPDATED" => Some(Self::TemplateUpdated),
1830 "AUDIT_EVENT_TYPE_API_KEY_CREATED" => Some(Self::ApiKeyCreated),
1831 "AUDIT_EVENT_TYPE_API_KEY_REVOKED" => Some(Self::ApiKeyRevoked),
1832 "AUDIT_EVENT_TYPE_INVITE_LINK_CREATED" => Some(Self::InviteLinkCreated),
1833 "AUDIT_EVENT_TYPE_INVITE_LINK_REVOKED" => Some(Self::InviteLinkRevoked),
1834 "AUDIT_EVENT_TYPE_GROUP_CREATED" => Some(Self::GroupCreated),
1835 "AUDIT_EVENT_TYPE_GROUP_UPDATED" => Some(Self::GroupUpdated),
1836 "AUDIT_EVENT_TYPE_GROUP_DELETED" => Some(Self::GroupDeleted),
1837 "AUDIT_EVENT_TYPE_GROUP_MEMBERS_ADDED" => Some(Self::GroupMembersAdded),
1838 "AUDIT_EVENT_TYPE_GROUP_MEMBERS_REMOVED" => Some(Self::GroupMembersRemoved),
1839 "AUDIT_EVENT_TYPE_TEAM_CREATED" => Some(Self::TeamCreated),
1840 "AUDIT_EVENT_TYPE_TEAM_UPDATED" => Some(Self::TeamUpdated),
1841 "AUDIT_EVENT_TYPE_TEAM_DELETED" => Some(Self::TeamDeleted),
1842 "AUDIT_EVENT_TYPE_TEAM_MEMBERS_ADDED" => Some(Self::TeamMembersAdded),
1843 "AUDIT_EVENT_TYPE_TEAM_MEMBERS_REMOVED" => Some(Self::TeamMembersRemoved),
1844 "AUDIT_EVENT_TYPE_SCIM_USER_PROVISIONED" => Some(Self::ScimUserProvisioned),
1845 "AUDIT_EVENT_TYPE_SCIM_USER_DEPROVISIONED" => Some(Self::ScimUserDeprovisioned),
1846 "AUDIT_EVENT_TYPE_SCIM_USER_UPDATED" => Some(Self::ScimUserUpdated),
1847 "AUDIT_EVENT_TYPE_TRANSLATION_CREATED" => Some(Self::TranslationCreated),
1848 "AUDIT_EVENT_TYPE_TRANSLATION_APPROVED" => Some(Self::TranslationApproved),
1849 "AUDIT_EVENT_TYPE_SANDBOX_CREATED" => Some(Self::SandboxCreated),
1850 "AUDIT_EVENT_TYPE_SANDBOX_EXPIRED" => Some(Self::SandboxExpired),
1851 "AUDIT_EVENT_TYPE_AI_PREDICTION_LOGGED" => Some(Self::AiPredictionLogged),
1852 "AUDIT_EVENT_TYPE_ML_PIPELINE_TRIGGERED" => Some(Self::MlPipelineTriggered),
1853 "AUDIT_EVENT_TYPE_ARCHETYPE_CLUSTERING_TRIGGERED" => Some(Self::ArchetypeClusteringTriggered),
1854 "AUDIT_EVENT_TYPE_ORG_CREATED" => Some(Self::OrgCreated),
1855 "AUDIT_EVENT_TYPE_ORG_DELETED" => Some(Self::OrgDeleted),
1856 _ => None,
1857 }
1858 }
1859}
1860#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1862#[repr(i32)]
1863pub enum AuditExportFormat {
1864 Unspecified = 0,
1866 Csv = 1,
1868 Json = 2,
1870 Parquet = 3,
1872}
1873impl AuditExportFormat {
1874 pub fn as_str_name(&self) -> &'static str {
1879 match self {
1880 Self::Unspecified => "AUDIT_EXPORT_FORMAT_UNSPECIFIED",
1881 Self::Csv => "AUDIT_EXPORT_FORMAT_CSV",
1882 Self::Json => "AUDIT_EXPORT_FORMAT_JSON",
1883 Self::Parquet => "AUDIT_EXPORT_FORMAT_PARQUET",
1884 }
1885 }
1886 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1888 match value {
1889 "AUDIT_EXPORT_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
1890 "AUDIT_EXPORT_FORMAT_CSV" => Some(Self::Csv),
1891 "AUDIT_EXPORT_FORMAT_JSON" => Some(Self::Json),
1892 "AUDIT_EXPORT_FORMAT_PARQUET" => Some(Self::Parquet),
1893 _ => None,
1894 }
1895 }
1896}
1897#[derive(Clone, PartialEq, ::prost::Message)]
1902pub struct Campaign {
1903 #[prost(string, tag="1")]
1906 pub id: ::prost::alloc::string::String,
1907 #[prost(string, tag="2")]
1910 pub name: ::prost::alloc::string::String,
1911 #[prost(string, tag="3")]
1914 pub template_id: ::prost::alloc::string::String,
1915 #[prost(int32, tag="4")]
1917 pub template_version: i32,
1918 #[prost(string, tag="5")]
1920 pub audience_snapshot_ref: ::prost::alloc::string::String,
1921 #[prost(enumeration="CampaignStatus", tag="6")]
1923 pub status: i32,
1924 #[prost(message, optional, tag="7")]
1926 pub workflow: ::core::option::Option<WorkflowDefinition>,
1927 #[prost(int32, tag="8")]
1929 pub total_recipients: i32,
1930 #[prost(int32, tag="9")]
1932 pub action_completed_count: i32,
1933 #[prost(int32, tag="10")]
1935 pub missed_count: i32,
1936 #[prost(message, optional, tag="11")]
1938 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1939 #[prost(message, optional, tag="12")]
1941 pub started_at: ::core::option::Option<::prost_types::Timestamp>,
1942 #[prost(message, optional, tag="13")]
1944 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
1945 #[prost(string, tag="14")]
1948 pub sender_name: ::prost::alloc::string::String,
1949 #[prost(string, tag="15")]
1952 pub title: ::prost::alloc::string::String,
1953 #[prost(bool, tag="16")]
1955 pub critical: bool,
1956 #[prost(string, tag="17")]
1961 pub default_locale: ::prost::alloc::string::String,
1962 #[prost(bool, tag="18")]
1966 pub wait_for_enrollment: bool,
1967 #[prost(message, optional, tag="19")]
1970 pub originating_archetype: ::core::option::Option<CampaignOriginatingArchetype>,
1971}
1972#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1977pub struct CampaignOriginatingArchetype {
1978 #[prost(string, tag="1")]
1980 pub group_id: ::prost::alloc::string::String,
1981 #[prost(string, tag="2")]
1984 pub archetype_label: ::prost::alloc::string::String,
1985}
1986#[derive(Clone, PartialEq, ::prost::Message)]
1988pub struct AudienceMember {
1989 #[prost(string, tag="1")]
1991 pub user_id: ::prost::alloc::string::String,
1992 #[prost(map="string, string", tag="2")]
1994 pub variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1995}
1996#[derive(Clone, PartialEq, ::prost::Message)]
1998pub struct CreateCampaignRequest {
1999 #[prost(string, tag="1")]
2002 pub name: ::prost::alloc::string::String,
2003 #[prost(string, tag="2")]
2006 pub template_id: ::prost::alloc::string::String,
2007 #[prost(int32, tag="3")]
2009 pub template_version: i32,
2010 #[prost(string, repeated, tag="4")]
2013 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2014 #[prost(message, optional, tag="5")]
2016 pub workflow: ::core::option::Option<WorkflowDefinition>,
2017 #[prost(string, tag="6")]
2020 pub sender_name: ::prost::alloc::string::String,
2021 #[prost(string, tag="7")]
2024 pub title: ::prost::alloc::string::String,
2025 #[prost(message, repeated, tag="8")]
2029 pub audience: ::prost::alloc::vec::Vec<AudienceMember>,
2030 #[prost(bool, tag="9")]
2033 pub include_restricted: bool,
2034 #[prost(bool, tag="10")]
2036 pub critical: bool,
2037 #[prost(string, tag="11")]
2039 pub default_locale: ::prost::alloc::string::String,
2040 #[prost(bool, tag="12")]
2044 pub wait_for_enrollment: bool,
2045 #[prost(message, optional, tag="13")]
2050 pub originating_archetype: ::core::option::Option<CampaignOriginatingArchetype>,
2051}
2052#[derive(Clone, PartialEq, ::prost::Message)]
2054pub struct CreateCampaignResponse {
2055 #[prost(message, optional, tag="1")]
2057 pub campaign: ::core::option::Option<Campaign>,
2058}
2059#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2061pub struct StartCampaignRequest {
2062 #[prost(string, tag="1")]
2065 pub campaign_id: ::prost::alloc::string::String,
2066}
2067#[derive(Clone, PartialEq, ::prost::Message)]
2069pub struct StartCampaignResponse {
2070 #[prost(message, optional, tag="1")]
2072 pub campaign: ::core::option::Option<Campaign>,
2073}
2074#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2076pub struct GetCampaignRequest {
2077 #[prost(string, tag="1")]
2080 pub campaign_id: ::prost::alloc::string::String,
2081}
2082#[derive(Clone, PartialEq, ::prost::Message)]
2084pub struct GetCampaignResponse {
2085 #[prost(message, optional, tag="1")]
2087 pub campaign: ::core::option::Option<Campaign>,
2088}
2089#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2091pub struct ListCampaignsRequest {
2092 #[prost(message, optional, tag="1")]
2094 pub pagination: ::core::option::Option<Pagination>,
2095}
2096#[derive(Clone, PartialEq, ::prost::Message)]
2098pub struct ListCampaignsResponse {
2099 #[prost(message, repeated, tag="1")]
2101 pub campaigns: ::prost::alloc::vec::Vec<Campaign>,
2102 #[prost(message, optional, tag="2")]
2104 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2105}
2106#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2108pub struct CancelCampaignRequest {
2109 #[prost(string, tag="1")]
2112 pub campaign_id: ::prost::alloc::string::String,
2113}
2114#[derive(Clone, PartialEq, ::prost::Message)]
2116pub struct CancelCampaignResponse {
2117 #[prost(message, optional, tag="1")]
2119 pub campaign: ::core::option::Option<Campaign>,
2120}
2121#[derive(Clone, PartialEq, ::prost::Message)]
2124pub struct UpdateCampaignRequest {
2125 #[prost(string, tag="1")]
2128 pub campaign_id: ::prost::alloc::string::String,
2129 #[prost(string, tag="2")]
2132 pub name: ::prost::alloc::string::String,
2133 #[prost(string, tag="3")]
2136 pub sender_name: ::prost::alloc::string::String,
2137 #[prost(string, tag="4")]
2140 pub title: ::prost::alloc::string::String,
2141 #[prost(string, tag="5")]
2144 pub template_id: ::prost::alloc::string::String,
2145 #[prost(int32, tag="6")]
2147 pub template_version: i32,
2148 #[prost(message, optional, tag="7")]
2150 pub workflow: ::core::option::Option<WorkflowDefinition>,
2151}
2152#[derive(Clone, PartialEq, ::prost::Message)]
2154pub struct UpdateCampaignResponse {
2155 #[prost(message, optional, tag="1")]
2157 pub campaign: ::core::option::Option<Campaign>,
2158}
2159#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2161pub struct Delivery {
2162 #[prost(string, tag="1")]
2165 pub id: ::prost::alloc::string::String,
2166 #[prost(string, tag="2")]
2169 pub user_id: ::prost::alloc::string::String,
2170 #[prost(string, tag="3")]
2173 pub campaign_id: ::prost::alloc::string::String,
2174 #[prost(enumeration="DeliveryStatus", tag="4")]
2176 pub status: i32,
2177 #[prost(message, optional, tag="5")]
2179 pub delivered_at: ::core::option::Option<::prost_types::Timestamp>,
2180 #[prost(message, optional, tag="6")]
2182 pub read_at: ::core::option::Option<::prost_types::Timestamp>,
2183 #[prost(message, optional, tag="7")]
2185 pub acted_at: ::core::option::Option<::prost_types::Timestamp>,
2186 #[prost(string, tag="8")]
2188 pub recipient_email: ::prost::alloc::string::String,
2189 #[prost(enumeration="delivery::Kind", tag="12")]
2192 pub kind: i32,
2193 #[prost(string, tag="13")]
2197 pub parent_delivery_id: ::prost::alloc::string::String,
2198 #[prost(string, tag="14")]
2202 pub rendered_locale: ::prost::alloc::string::String,
2203}
2204pub mod delivery {
2206 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2208 #[repr(i32)]
2209 pub enum Kind {
2210 Unspecified = 0,
2212 Primary = 1,
2214 Escalation = 2,
2216 }
2217 impl Kind {
2218 pub fn as_str_name(&self) -> &'static str {
2223 match self {
2224 Self::Unspecified => "KIND_UNSPECIFIED",
2225 Self::Primary => "KIND_PRIMARY",
2226 Self::Escalation => "KIND_ESCALATION",
2227 }
2228 }
2229 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2231 match value {
2232 "KIND_UNSPECIFIED" => Some(Self::Unspecified),
2233 "KIND_PRIMARY" => Some(Self::Primary),
2234 "KIND_ESCALATION" => Some(Self::Escalation),
2235 _ => None,
2236 }
2237 }
2238 }
2239}
2240#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2242pub struct ListDeliveriesRequest {
2243 #[prost(string, tag="1")]
2246 pub campaign_id: ::prost::alloc::string::String,
2247 #[prost(enumeration="DeliveryStatus", tag="2")]
2249 pub status_filter: i32,
2250 #[prost(message, optional, tag="3")]
2252 pub pagination: ::core::option::Option<Pagination>,
2253}
2254#[derive(Clone, PartialEq, ::prost::Message)]
2256pub struct ListDeliveriesResponse {
2257 #[prost(message, repeated, tag="1")]
2259 pub deliveries: ::prost::alloc::vec::Vec<Delivery>,
2260 #[prost(message, optional, tag="2")]
2262 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2263}
2264#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2269pub struct GetCampaignArchetypeBreakdownRequest {
2270 #[prost(string, tag="1")]
2273 pub campaign_id: ::prost::alloc::string::String,
2274}
2275#[derive(Clone, PartialEq, ::prost::Message)]
2280pub struct ArchetypeShareShift {
2281 #[prost(string, tag="1")]
2283 pub label: ::prost::alloc::string::String,
2284 #[prost(double, tag="2")]
2287 pub share_before: f64,
2288 #[prost(double, tag="3")]
2291 pub share_after: f64,
2292 #[prost(bool, tag="4")]
2295 pub is_origin: bool,
2296}
2297#[derive(Clone, PartialEq, ::prost::Message)]
2302pub struct GetCampaignArchetypeBreakdownResponse {
2303 #[prost(message, repeated, tag="1")]
2306 pub shifts: ::prost::alloc::vec::Vec<ArchetypeShareShift>,
2307 #[prost(message, optional, tag="2")]
2310 pub before_snapshot_at: ::core::option::Option<::prost_types::Timestamp>,
2311 #[prost(message, optional, tag="3")]
2313 pub after_snapshot_at: ::core::option::Option<::prost_types::Timestamp>,
2314 #[prost(bool, tag="4")]
2318 pub insufficient_history: bool,
2319}
2320#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2327pub struct ResolveOrCreateShortCodeRequest {
2328 #[prost(string, tag="1")]
2331 pub campaign_id: ::prost::alloc::string::String,
2332}
2333#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2337pub struct ResolveOrCreateShortCodeResponse {
2338 #[prost(string, tag="1")]
2340 pub short_code: ::prost::alloc::string::String,
2341}
2342#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2349pub struct GetCampaignByShortCodeRequest {
2350 #[prost(string, tag="1")]
2353 pub short_code: ::prost::alloc::string::String,
2354}
2355#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2362pub struct GetCampaignByShortCodeResponse {
2363 #[prost(string, tag="1")]
2366 pub campaign_id: ::prost::alloc::string::String,
2367 #[prost(string, tag="2")]
2370 pub org_id: ::prost::alloc::string::String,
2371 #[prost(string, tag="3")]
2375 pub organization_name: ::prost::alloc::string::String,
2376 #[prost(string, tag="4")]
2380 pub subject: ::prost::alloc::string::String,
2381}
2382#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2387pub struct Device {
2388 #[prost(string, tag="1")]
2391 pub device_id: ::prost::alloc::string::String,
2392 #[prost(string, tag="2")]
2395 pub user_id: ::prost::alloc::string::String,
2396 #[prost(enumeration="Platform", tag="3")]
2398 pub platform: i32,
2399 #[prost(string, tag="4")]
2401 pub push_token: ::prost::alloc::string::String,
2402 #[prost(bool, tag="5")]
2404 pub active: bool,
2405 #[prost(message, optional, tag="6")]
2407 pub last_seen: ::core::option::Option<::prost_types::Timestamp>,
2408 #[prost(message, optional, tag="7")]
2410 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2411}
2412#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2414pub struct DeviceSummary {
2415 #[prost(string, tag="1")]
2417 pub device_id: ::prost::alloc::string::String,
2418 #[prost(string, tag="2")]
2420 pub user_id: ::prost::alloc::string::String,
2421 #[prost(enumeration="Platform", tag="3")]
2423 pub platform: i32,
2424 #[prost(bool, tag="4")]
2426 pub active: bool,
2427 #[prost(message, optional, tag="5")]
2429 pub last_seen: ::core::option::Option<::prost_types::Timestamp>,
2430 #[prost(message, optional, tag="6")]
2432 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2433}
2434#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2436pub struct RegisterRequest {
2437 #[prost(string, tag="1")]
2440 pub device_id: ::prost::alloc::string::String,
2441 #[prost(enumeration="Platform", tag="2")]
2443 pub platform: i32,
2444 #[prost(string, tag="3")]
2447 pub push_token: ::prost::alloc::string::String,
2448}
2449#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2451pub struct RegisterResponse {
2452 #[prost(message, optional, tag="1")]
2454 pub device: ::core::option::Option<DeviceSummary>,
2455}
2456#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2458pub struct DeactivateRequest {
2459 #[prost(string, tag="1")]
2462 pub device_id: ::prost::alloc::string::String,
2463}
2464#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2466pub struct DeactivateResponse {
2467 #[prost(bool, tag="1")]
2469 pub success: bool,
2470}
2471#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2473pub struct ListDevicesRequest {
2474}
2475#[derive(Clone, PartialEq, ::prost::Message)]
2477pub struct ListDevicesResponse {
2478 #[prost(message, repeated, tag="1")]
2480 pub devices: ::prost::alloc::vec::Vec<DeviceSummary>,
2481}
2482#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2484pub struct ListMemberDevicesRequest {
2485 #[prost(string, tag="1")]
2488 pub user_id: ::prost::alloc::string::String,
2489}
2490#[derive(Clone, PartialEq, ::prost::Message)]
2492pub struct ListMemberDevicesResponse {
2493 #[prost(message, repeated, tag="1")]
2495 pub devices: ::prost::alloc::vec::Vec<DeviceSummary>,
2496}
2497#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2502pub struct UserSettings {
2503 #[prost(enumeration="ThemePreference", tag="1")]
2505 pub theme_preference: i32,
2506 #[prost(string, tag="2")]
2510 pub preferred_locale: ::prost::alloc::string::String,
2511}
2512#[derive(Clone, PartialEq, ::prost::Message)]
2515pub struct UserProfile {
2516 #[prost(string, tag="1")]
2519 pub first_name: ::prost::alloc::string::String,
2520 #[prost(string, tag="2")]
2523 pub last_name: ::prost::alloc::string::String,
2524 #[prost(string, tag="3")]
2527 pub department: ::prost::alloc::string::String,
2528 #[prost(string, tag="4")]
2531 pub title: ::prost::alloc::string::String,
2532 #[prost(string, tag="5")]
2535 pub phone: ::prost::alloc::string::String,
2536 #[prost(string, tag="6")]
2539 pub location: ::prost::alloc::string::String,
2540 #[prost(string, tag="7")]
2543 pub employee_id: ::prost::alloc::string::String,
2544 #[prost(string, tag="8")]
2547 pub manager_name: ::prost::alloc::string::String,
2548 #[prost(string, tag="9")]
2551 pub start_date: ::prost::alloc::string::String,
2552 #[prost(map="string, string", tag="10")]
2555 pub custom_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
2556 #[prost(string, tag="11")]
2560 pub manager_id: ::prost::alloc::string::String,
2561}
2562#[derive(Clone, PartialEq, ::prost::Message)]
2564pub struct User {
2565 #[prost(string, tag="1")]
2567 pub id: ::prost::alloc::string::String,
2568 #[prost(string, tag="2")]
2571 pub email: ::prost::alloc::string::String,
2572 #[prost(string, tag="3")]
2575 pub name: ::prost::alloc::string::String,
2576 #[prost(enumeration="UserStatus", tag="5")]
2578 pub status: i32,
2579 #[prost(message, optional, tag="6")]
2581 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2582 #[prost(message, optional, tag="7")]
2584 pub role: ::core::option::Option<Role>,
2585 #[prost(string, tag="8")]
2587 pub role_id: ::prost::alloc::string::String,
2588 #[prost(message, optional, tag="9")]
2591 pub profile: ::core::option::Option<UserProfile>,
2592 #[prost(bool, tag="10")]
2595 pub processing_restricted: bool,
2596 #[prost(string, tag="11")]
2599 pub data_governance_region: ::prost::alloc::string::String,
2600}
2601#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2605#[repr(i32)]
2606pub enum UserStatus {
2607 Unspecified = 0,
2609 Invited = 1,
2611 Active = 2,
2613 Deactivated = 3,
2615}
2616impl UserStatus {
2617 pub fn as_str_name(&self) -> &'static str {
2622 match self {
2623 Self::Unspecified => "USER_STATUS_UNSPECIFIED",
2624 Self::Invited => "USER_STATUS_INVITED",
2625 Self::Active => "USER_STATUS_ACTIVE",
2626 Self::Deactivated => "USER_STATUS_DEACTIVATED",
2627 }
2628 }
2629 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2631 match value {
2632 "USER_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
2633 "USER_STATUS_INVITED" => Some(Self::Invited),
2634 "USER_STATUS_ACTIVE" => Some(Self::Active),
2635 "USER_STATUS_DEACTIVATED" => Some(Self::Deactivated),
2636 _ => None,
2637 }
2638 }
2639}
2640#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2642#[repr(i32)]
2643pub enum ThemePreference {
2644 Unspecified = 0,
2646 Light = 1,
2648 Dark = 2,
2650 System = 3,
2652}
2653impl ThemePreference {
2654 pub fn as_str_name(&self) -> &'static str {
2659 match self {
2660 Self::Unspecified => "THEME_PREFERENCE_UNSPECIFIED",
2661 Self::Light => "THEME_PREFERENCE_LIGHT",
2662 Self::Dark => "THEME_PREFERENCE_DARK",
2663 Self::System => "THEME_PREFERENCE_SYSTEM",
2664 }
2665 }
2666 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2668 match value {
2669 "THEME_PREFERENCE_UNSPECIFIED" => Some(Self::Unspecified),
2670 "THEME_PREFERENCE_LIGHT" => Some(Self::Light),
2671 "THEME_PREFERENCE_DARK" => Some(Self::Dark),
2672 "THEME_PREFERENCE_SYSTEM" => Some(Self::System),
2673 _ => None,
2674 }
2675 }
2676}
2677#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2682pub struct Group {
2683 #[prost(string, tag="1")]
2685 pub id: ::prost::alloc::string::String,
2686 #[prost(string, tag="2")]
2689 pub name: ::prost::alloc::string::String,
2690 #[prost(string, tag="3")]
2693 pub description: ::prost::alloc::string::String,
2694 #[prost(int32, tag="4")]
2696 pub member_count: i32,
2697 #[prost(message, optional, tag="5")]
2699 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2700 #[prost(message, optional, tag="6")]
2702 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
2703 #[prost(bool, tag="7")]
2705 pub is_default: bool,
2706 #[prost(string, tag="8")]
2708 pub created_by: ::prost::alloc::string::String,
2709}
2710#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2712pub struct CreateGroupRequest {
2713 #[prost(string, tag="1")]
2716 pub name: ::prost::alloc::string::String,
2717 #[prost(string, tag="2")]
2720 pub description: ::prost::alloc::string::String,
2721}
2722#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2724pub struct CreateGroupResponse {
2725 #[prost(message, optional, tag="1")]
2727 pub group: ::core::option::Option<Group>,
2728}
2729#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2731pub struct GetGroupRequest {
2732 #[prost(string, tag="1")]
2734 pub group_id: ::prost::alloc::string::String,
2735}
2736#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2738pub struct GetGroupResponse {
2739 #[prost(message, optional, tag="1")]
2741 pub group: ::core::option::Option<Group>,
2742}
2743#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2745pub struct ListGroupsRequest {
2746 #[prost(message, optional, tag="1")]
2748 pub pagination: ::core::option::Option<Pagination>,
2749}
2750#[derive(Clone, PartialEq, ::prost::Message)]
2752pub struct ListGroupsResponse {
2753 #[prost(message, repeated, tag="1")]
2755 pub groups: ::prost::alloc::vec::Vec<Group>,
2756 #[prost(message, optional, tag="2")]
2758 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2759}
2760#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2762pub struct UpdateGroupRequest {
2763 #[prost(string, tag="1")]
2765 pub group_id: ::prost::alloc::string::String,
2766 #[prost(string, tag="2")]
2770 pub name: ::prost::alloc::string::String,
2771 #[prost(string, tag="3")]
2774 pub description: ::prost::alloc::string::String,
2775}
2776#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2778pub struct UpdateGroupResponse {
2779 #[prost(message, optional, tag="1")]
2781 pub group: ::core::option::Option<Group>,
2782}
2783#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2785pub struct DeleteGroupRequest {
2786 #[prost(string, tag="1")]
2789 pub group_id: ::prost::alloc::string::String,
2790}
2791#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2793pub struct DeleteGroupResponse {
2794}
2795#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2797pub struct AddGroupMembersRequest {
2798 #[prost(string, tag="1")]
2800 pub group_id: ::prost::alloc::string::String,
2801 #[prost(string, repeated, tag="2")]
2805 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2806}
2807#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2809pub struct AddGroupMembersResponse {
2810 #[prost(message, optional, tag="1")]
2812 pub group: ::core::option::Option<Group>,
2813}
2814#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2816pub struct RemoveGroupMembersRequest {
2817 #[prost(string, tag="1")]
2819 pub group_id: ::prost::alloc::string::String,
2820 #[prost(string, repeated, tag="2")]
2823 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2824}
2825#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2827pub struct RemoveGroupMembersResponse {
2828 #[prost(message, optional, tag="1")]
2830 pub group: ::core::option::Option<Group>,
2831}
2832#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2834pub struct ListGroupMembersRequest {
2835 #[prost(string, tag="1")]
2837 pub group_id: ::prost::alloc::string::String,
2838 #[prost(message, optional, tag="2")]
2840 pub pagination: ::core::option::Option<Pagination>,
2841}
2842#[derive(Clone, PartialEq, ::prost::Message)]
2844pub struct ListGroupMembersResponse {
2845 #[prost(message, repeated, tag="1")]
2847 pub users: ::prost::alloc::vec::Vec<User>,
2848 #[prost(message, optional, tag="2")]
2850 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2851}
2852#[derive(Clone, PartialEq, ::prost::Message)]
2854pub struct UserGroupMembership {
2855 #[prost(string, tag="1")]
2857 pub user_id: ::prost::alloc::string::String,
2858 #[prost(message, repeated, tag="2")]
2860 pub groups: ::prost::alloc::vec::Vec<Group>,
2861}
2862#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2864pub struct GetUserGroupMembershipsRequest {
2865 #[prost(string, repeated, tag="1")]
2868 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2869}
2870#[derive(Clone, PartialEq, ::prost::Message)]
2872pub struct GetUserGroupMembershipsResponse {
2873 #[prost(message, repeated, tag="1")]
2875 pub memberships: ::prost::alloc::vec::Vec<UserGroupMembership>,
2876}
2877#[derive(Clone, PartialEq, ::prost::Message)]
2881pub struct TouchEvent {
2882 #[prost(string, tag="1")]
2885 pub screen_name: ::prost::alloc::string::String,
2886 #[prost(float, tag="2")]
2889 pub x_pct: f32,
2890 #[prost(float, tag="3")]
2893 pub y_pct: f32,
2894 #[prost(enumeration="TouchEventType", tag="4")]
2896 pub event_type: i32,
2897 #[prost(int32, tag="5")]
2899 pub screen_width: i32,
2900 #[prost(int32, tag="6")]
2902 pub screen_height: i32,
2903 #[prost(message, optional, tag="7")]
2905 pub client_timestamp: ::core::option::Option<::prost_types::Timestamp>,
2906 #[prost(string, tag="8")]
2909 pub campaign_id: ::prost::alloc::string::String,
2910}
2911#[derive(Clone, PartialEq, ::prost::Message)]
2913pub struct IngestTouchEventsRequest {
2914 #[prost(message, repeated, tag="1")]
2917 pub events: ::prost::alloc::vec::Vec<TouchEvent>,
2918}
2919#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2921pub struct IngestTouchEventsResponse {
2922 #[prost(int32, tag="1")]
2924 pub ingested_count: i32,
2925}
2926#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2928pub struct HeatmapDataPoint {
2929 #[prost(float, tag="1")]
2931 pub x_pct: f32,
2932 #[prost(float, tag="2")]
2934 pub y_pct: f32,
2935 #[prost(float, tag="3")]
2937 pub value: f32,
2938}
2939#[derive(Clone, PartialEq, ::prost::Message)]
2941pub struct QueryHeatmapDataRequest {
2942 #[prost(string, tag="1")]
2945 pub screen_name: ::prost::alloc::string::String,
2946 #[prost(message, optional, tag="2")]
2948 pub date_from: ::core::option::Option<::prost_types::Timestamp>,
2949 #[prost(message, optional, tag="3")]
2951 pub date_to: ::core::option::Option<::prost_types::Timestamp>,
2952 #[prost(string, tag="4")]
2955 pub campaign_id: ::prost::alloc::string::String,
2956 #[prost(float, tag="6")]
2959 pub grid_resolution: f32,
2960 #[prost(enumeration="HeatmapMode", tag="7")]
2962 pub mode: i32,
2963 #[prost(enumeration="TouchEventType", repeated, tag="8")]
2965 pub event_types: ::prost::alloc::vec::Vec<i32>,
2966}
2967#[derive(Clone, PartialEq, ::prost::Message)]
2969pub struct QueryHeatmapDataResponse {
2970 #[prost(message, repeated, tag="1")]
2972 pub data_points: ::prost::alloc::vec::Vec<HeatmapDataPoint>,
2973 #[prost(string, tag="3")]
2976 pub screenshot_url: ::prost::alloc::string::String,
2977 #[prost(bool, tag="4")]
2979 pub cohort_enabled: bool,
2980}
2981#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2983pub struct UploadScreenshotRequest {
2984 #[prost(string, tag="1")]
2987 pub screen_name: ::prost::alloc::string::String,
2988 #[prost(string, tag="2")]
2990 pub app_version: ::prost::alloc::string::String,
2991 #[prost(bytes="vec", tag="3")]
2994 pub image_data: ::prost::alloc::vec::Vec<u8>,
2995}
2996#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2998pub struct UploadScreenshotResponse {
2999 #[prost(string, tag="1")]
3001 pub url: ::prost::alloc::string::String,
3002}
3003#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3005pub struct ScreenScreenshot {
3006 #[prost(string, tag="1")]
3008 pub screen_name: ::prost::alloc::string::String,
3009 #[prost(string, tag="2")]
3011 pub url: ::prost::alloc::string::String,
3012 #[prost(string, tag="3")]
3014 pub app_version: ::prost::alloc::string::String,
3015}
3016#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3018pub struct ListScreenshotsRequest {
3019}
3020#[derive(Clone, PartialEq, ::prost::Message)]
3022pub struct ListScreenshotsResponse {
3023 #[prost(message, repeated, tag="1")]
3025 pub screenshots: ::prost::alloc::vec::Vec<ScreenScreenshot>,
3026}
3027#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3031#[repr(i32)]
3032pub enum TouchEventType {
3033 Unspecified = 0,
3035 Tap = 1,
3037 LongPress = 2,
3039 Scroll = 3,
3041 ActionClick = 4,
3043}
3044impl TouchEventType {
3045 pub fn as_str_name(&self) -> &'static str {
3050 match self {
3051 Self::Unspecified => "TOUCH_EVENT_TYPE_UNSPECIFIED",
3052 Self::Tap => "TOUCH_EVENT_TYPE_TAP",
3053 Self::LongPress => "TOUCH_EVENT_TYPE_LONG_PRESS",
3054 Self::Scroll => "TOUCH_EVENT_TYPE_SCROLL",
3055 Self::ActionClick => "TOUCH_EVENT_TYPE_ACTION_CLICK",
3056 }
3057 }
3058 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3060 match value {
3061 "TOUCH_EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
3062 "TOUCH_EVENT_TYPE_TAP" => Some(Self::Tap),
3063 "TOUCH_EVENT_TYPE_LONG_PRESS" => Some(Self::LongPress),
3064 "TOUCH_EVENT_TYPE_SCROLL" => Some(Self::Scroll),
3065 "TOUCH_EVENT_TYPE_ACTION_CLICK" => Some(Self::ActionClick),
3066 _ => None,
3067 }
3068 }
3069}
3070#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3072#[repr(i32)]
3073pub enum HeatmapMode {
3074 Unspecified = 0,
3076 Total = 1,
3078 Median = 2,
3080}
3081impl HeatmapMode {
3082 pub fn as_str_name(&self) -> &'static str {
3087 match self {
3088 Self::Unspecified => "HEATMAP_MODE_UNSPECIFIED",
3089 Self::Total => "HEATMAP_MODE_TOTAL",
3090 Self::Median => "HEATMAP_MODE_MEDIAN",
3091 }
3092 }
3093 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3095 match value {
3096 "HEATMAP_MODE_UNSPECIFIED" => Some(Self::Unspecified),
3097 "HEATMAP_MODE_TOTAL" => Some(Self::Total),
3098 "HEATMAP_MODE_MEDIAN" => Some(Self::Median),
3099 _ => None,
3100 }
3101 }
3102}
3103#[derive(Clone, PartialEq, ::prost::Message)]
3107pub struct InboxEntry {
3108 #[prost(string, tag="1")]
3111 pub delivery_id: ::prost::alloc::string::String,
3112 #[prost(message, optional, tag="2")]
3114 pub message: ::core::option::Option<Message>,
3115 #[prost(enumeration="DeliveryStatus", tag="3")]
3117 pub status: i32,
3118 #[prost(bool, tag="4")]
3120 pub read: bool,
3121 #[prost(message, optional, tag="5")]
3123 pub received_at: ::core::option::Option<::prost_types::Timestamp>,
3124 #[prost(enumeration="delivery::Kind", tag="6")]
3128 pub kind: i32,
3129 #[prost(string, tag="7")]
3132 pub parent_delivery_id: ::prost::alloc::string::String,
3133 #[prost(string, tag="8")]
3136 pub rendered_locale: ::prost::alloc::string::String,
3137}
3138#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3140pub struct SyncRequest {
3141 #[prost(message, optional, tag="1")]
3143 pub since: ::core::option::Option<::prost_types::Timestamp>,
3144 #[prost(int32, tag="2")]
3147 pub limit: i32,
3148}
3149#[derive(Clone, PartialEq, ::prost::Message)]
3151pub struct SyncResponse {
3152 #[prost(message, repeated, tag="1")]
3154 pub entries: ::prost::alloc::vec::Vec<InboxEntry>,
3155 #[prost(message, optional, tag="2")]
3157 pub next_since: ::core::option::Option<::prost_types::Timestamp>,
3158}
3159#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3161pub struct MarkReadRequest {
3162 #[prost(string, tag="1")]
3165 pub delivery_id: ::prost::alloc::string::String,
3166}
3167#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3169pub struct MarkReadResponse {
3170 #[prost(bool, tag="1")]
3172 pub success: bool,
3173}
3174#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3176pub struct GetMessageRequest {
3177 #[prost(string, tag="1")]
3180 pub delivery_id: ::prost::alloc::string::String,
3181}
3182#[derive(Clone, PartialEq, ::prost::Message)]
3184pub struct GetMessageResponse {
3185 #[prost(message, optional, tag="1")]
3187 pub entry: ::core::option::Option<InboxEntry>,
3188}
3189#[derive(Clone, PartialEq, ::prost::Message)]
3194pub struct Archetype {
3195 #[prost(string, tag="1")]
3197 pub label: ::prost::alloc::string::String,
3198 #[prost(string, tag="2")]
3200 pub description: ::prost::alloc::string::String,
3201 #[prost(float, tag="3")]
3203 pub percentage: f32,
3204 #[prost(map="string, double", tag="4")]
3211 pub feature_centroid: ::std::collections::HashMap<::prost::alloc::string::String, f64>,
3212 #[prost(map="string, message", tag="5")]
3217 pub feature_breakdown: ::std::collections::HashMap<::prost::alloc::string::String, DimensionStats>,
3218 #[prost(message, optional, tag="6")]
3222 pub tap_heatmap: ::core::option::Option<TapHeatmap>,
3223 #[prost(message, optional, tag="7")]
3227 pub forecast: ::core::option::Option<ArchetypeForecast>,
3228 #[prost(message, repeated, tag="8")]
3234 pub exemplar_sessions: ::prost::alloc::vec::Vec<ExemplarSession>,
3235 #[prost(message, optional, tag="9")]
3238 pub screen_dwell: ::core::option::Option<ScreenDwell>,
3239 #[prost(message, optional, tag="10")]
3243 pub response_timeline: ::core::option::Option<ResponseTimeline>,
3244}
3245#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3250pub struct DimensionStats {
3251 #[prost(double, tag="1")]
3253 pub centroid: f64,
3254 #[prost(double, tag="2")]
3256 pub p25: f64,
3257 #[prost(double, tag="3")]
3259 pub p50: f64,
3260 #[prost(double, tag="4")]
3262 pub p75: f64,
3263 #[prost(double, tag="5")]
3266 pub group_p50: f64,
3267}
3268#[derive(Clone, PartialEq, ::prost::Message)]
3272pub struct TapHeatmap {
3273 #[prost(int32, tag="1")]
3275 pub width: i32,
3276 #[prost(int32, tag="2")]
3278 pub height: i32,
3279 #[prost(double, repeated, tag="3")]
3282 pub values: ::prost::alloc::vec::Vec<f64>,
3283 #[prost(int32, tag="4")]
3286 pub session_count: i32,
3287 #[prost(message, repeated, tag="5")]
3291 pub layers: ::prost::alloc::vec::Vec<TapHeatmapLayer>,
3292}
3293#[derive(Clone, PartialEq, ::prost::Message)]
3295pub struct TapHeatmapLayer {
3296 #[prost(string, tag="1")]
3299 pub event_type: ::prost::alloc::string::String,
3300 #[prost(double, repeated, tag="2")]
3303 pub values: ::prost::alloc::vec::Vec<f64>,
3304}
3305#[derive(Clone, PartialEq, ::prost::Message)]
3307pub struct ArchetypeForecast {
3308 #[prost(message, repeated, tag="1")]
3311 pub horizons: ::prost::alloc::vec::Vec<ForecastHorizon>,
3312}
3313#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3315pub struct ForecastHorizon {
3316 #[prost(int32, tag="1")]
3318 pub days: i32,
3319 #[prost(double, tag="2")]
3322 pub predicted_share: f64,
3323 #[prost(double, tag="3")]
3325 pub lower: f64,
3326 #[prost(double, tag="4")]
3328 pub upper: f64,
3329 #[prost(enumeration="ConfidenceLevel", tag="5")]
3331 pub confidence: i32,
3332}
3333#[derive(Clone, PartialEq, ::prost::Message)]
3336pub struct ExemplarSession {
3337 #[prost(string, tag="1")]
3340 pub session_id: ::prost::alloc::string::String,
3341 #[prost(int32, tag="2")]
3344 pub rank: i32,
3345 #[prost(double, tag="3")]
3347 pub distance: f64,
3348 #[prost(int32, tag="4")]
3350 pub duration_seconds: i32,
3351 #[prost(string, tag="5")]
3355 pub platform: ::prost::alloc::string::String,
3356}
3357#[derive(Clone, PartialEq, ::prost::Message)]
3361pub struct ScreenDwell {
3362 #[prost(message, repeated, tag="1")]
3365 pub entries: ::prost::alloc::vec::Vec<ScreenDwellEntry>,
3366}
3367#[derive(Clone, PartialEq, ::prost::Message)]
3368pub struct ScreenDwellEntry {
3369 #[prost(string, tag="1")]
3373 pub screen_name: ::prost::alloc::string::String,
3374 #[prost(double, tag="2")]
3376 pub median_seconds: f64,
3377 #[prost(double, tag="3")]
3379 pub p75_seconds: f64,
3380 #[prost(int32, tag="4")]
3382 pub session_count: i32,
3383}
3384#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3388pub struct ResponseTimeline {
3389 #[prost(message, optional, tag="1")]
3391 pub read_after_delivered: ::core::option::Option<LatencyPercentiles>,
3392 #[prost(message, optional, tag="2")]
3395 pub ack_after_read: ::core::option::Option<LatencyPercentiles>,
3396 #[prost(message, optional, tag="3")]
3399 pub ack_after_delivered: ::core::option::Option<LatencyPercentiles>,
3400 #[prost(int32, tag="4")]
3402 pub delivery_count: i32,
3403}
3404#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3406pub struct LatencyPercentiles {
3407 #[prost(double, tag="1")]
3408 pub p50: f64,
3409 #[prost(double, tag="2")]
3410 pub p75: f64,
3411 #[prost(double, tag="3")]
3412 pub p95: f64,
3413}
3414#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3417pub struct CohortPrediction {
3418 #[prost(float, tag="1")]
3420 pub predicted_ack_rate: f32,
3421 #[prost(float, tag="2")]
3423 pub confidence_low: f32,
3424 #[prost(float, tag="3")]
3426 pub confidence_high: f32,
3427 #[prost(enumeration="ConfidenceLevel", tag="4")]
3429 pub confidence_level: i32,
3430 #[prost(int32, tag="5")]
3432 pub data_point_count: i32,
3433}
3434#[derive(Clone, PartialEq, ::prost::Message)]
3436pub struct CampaignAdvisory {
3437 #[prost(message, optional, tag="1")]
3439 pub predicted_ack: ::core::option::Option<CohortPrediction>,
3440 #[prost(int32, tag="2")]
3443 pub suggested_escalation_delay_minutes: i32,
3444 #[prost(message, repeated, tag="3")]
3446 pub archetypes: ::prost::alloc::vec::Vec<Archetype>,
3447}
3448#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3450pub struct GetGroupArchetypesRequest {
3451 #[prost(string, tag="1")]
3453 pub group_id: ::prost::alloc::string::String,
3454}
3455#[derive(Clone, PartialEq, ::prost::Message)]
3457pub struct GetGroupArchetypesResponse {
3458 #[prost(message, repeated, tag="1")]
3460 pub archetypes: ::prost::alloc::vec::Vec<Archetype>,
3461 #[prost(int32, tag="2")]
3463 pub data_point_count: i32,
3464 #[prost(enumeration="PipelineState", tag="3")]
3468 pub pipeline_state: i32,
3469}
3470#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3472pub struct PredictCampaignAckRequest {
3473 #[prost(string, tag="1")]
3475 pub group_id: ::prost::alloc::string::String,
3476 #[prost(string, tag="2")]
3478 pub template_type: ::prost::alloc::string::String,
3479 #[prost(int32, tag="3")]
3481 pub workflow_step_count: i32,
3482}
3483#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3485pub struct PredictCampaignAckResponse {
3486 #[prost(message, optional, tag="1")]
3488 pub prediction: ::core::option::Option<CohortPrediction>,
3489}
3490#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3492pub struct GetCampaignAdvisoryRequest {
3493 #[prost(string, tag="1")]
3495 pub group_id: ::prost::alloc::string::String,
3496 #[prost(string, tag="2")]
3498 pub template_id: ::prost::alloc::string::String,
3499 #[prost(int32, tag="3")]
3501 pub template_version: i32,
3502 #[prost(int32, tag="4")]
3504 pub workflow_step_count: i32,
3505}
3506#[derive(Clone, PartialEq, ::prost::Message)]
3508pub struct GetCampaignAdvisoryResponse {
3509 #[prost(message, optional, tag="1")]
3511 pub advisory: ::core::option::Option<CampaignAdvisory>,
3512}
3513#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3515pub struct GetInsightNarrativeRequest {
3516 #[prost(string, tag="1")]
3518 pub group_id: ::prost::alloc::string::String,
3519 #[prost(string, tag="2")]
3521 pub prompt_name: ::prost::alloc::string::String,
3522}
3523#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3525pub struct GetInsightNarrativeResponse {
3526 #[prost(string, tag="1")]
3528 pub narrative: ::prost::alloc::string::String,
3529 #[prost(message, optional, tag="2")]
3531 pub generated_at: ::core::option::Option<::prost_types::Timestamp>,
3532 #[prost(string, tag="3")]
3534 pub model_id: ::prost::alloc::string::String,
3535}
3536#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3539pub struct TriggerMlPipelineRequest {
3540}
3541#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3543pub struct TriggerMlPipelineResponse {
3544 #[prost(int32, tag="1")]
3546 pub remaining_this_month: i32,
3547 #[prost(message, optional, tag="2")]
3549 pub last_trained_at: ::core::option::Option<::prost_types::Timestamp>,
3550}
3551#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3555pub struct TriggerArchetypeClusteringRequest {
3556 #[prost(string, tag="1")]
3558 pub group_id: ::prost::alloc::string::String,
3559}
3560#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3562pub struct TriggerArchetypeClusteringResponse {
3563 #[prost(string, tag="1")]
3566 pub workflow_id: ::prost::alloc::string::String,
3567 #[prost(int32, tag="2")]
3570 pub remaining_this_month: i32,
3571 #[prost(message, optional, tag="3")]
3574 pub last_clustered_at: ::core::option::Option<::prost_types::Timestamp>,
3575}
3576#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3580pub struct GenerateCampaignBodyDraftRequest {
3581 #[prost(string, tag="1")]
3583 pub group_id: ::prost::alloc::string::String,
3584 #[prost(string, tag="2")]
3586 pub archetype_label: ::prost::alloc::string::String,
3587 #[prost(string, tag="3")]
3590 pub lane_action: ::prost::alloc::string::String,
3591}
3592#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3594pub struct GenerateCampaignBodyDraftResponse {
3595 #[prost(string, tag="1")]
3598 pub body_markdown: ::prost::alloc::string::String,
3599}
3600#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3604#[repr(i32)]
3605pub enum ConfidenceLevel {
3606 Unspecified = 0,
3607 Low = 1,
3609 Medium = 2,
3611 High = 3,
3613}
3614impl ConfidenceLevel {
3615 pub fn as_str_name(&self) -> &'static str {
3620 match self {
3621 Self::Unspecified => "CONFIDENCE_LEVEL_UNSPECIFIED",
3622 Self::Low => "CONFIDENCE_LEVEL_LOW",
3623 Self::Medium => "CONFIDENCE_LEVEL_MEDIUM",
3624 Self::High => "CONFIDENCE_LEVEL_HIGH",
3625 }
3626 }
3627 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3629 match value {
3630 "CONFIDENCE_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
3631 "CONFIDENCE_LEVEL_LOW" => Some(Self::Low),
3632 "CONFIDENCE_LEVEL_MEDIUM" => Some(Self::Medium),
3633 "CONFIDENCE_LEVEL_HIGH" => Some(Self::High),
3634 _ => None,
3635 }
3636 }
3637}
3638#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3644#[repr(i32)]
3645pub enum PipelineState {
3646 Unspecified = 0,
3647 NeverRun = 1,
3650 BelowThreshold = 2,
3654 NoClusters = 3,
3658 Ready = 4,
3660}
3661impl PipelineState {
3662 pub fn as_str_name(&self) -> &'static str {
3667 match self {
3668 Self::Unspecified => "PIPELINE_STATE_UNSPECIFIED",
3669 Self::NeverRun => "PIPELINE_STATE_NEVER_RUN",
3670 Self::BelowThreshold => "PIPELINE_STATE_BELOW_THRESHOLD",
3671 Self::NoClusters => "PIPELINE_STATE_NO_CLUSTERS",
3672 Self::Ready => "PIPELINE_STATE_READY",
3673 }
3674 }
3675 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3677 match value {
3678 "PIPELINE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
3679 "PIPELINE_STATE_NEVER_RUN" => Some(Self::NeverRun),
3680 "PIPELINE_STATE_BELOW_THRESHOLD" => Some(Self::BelowThreshold),
3681 "PIPELINE_STATE_NO_CLUSTERS" => Some(Self::NoClusters),
3682 "PIPELINE_STATE_READY" => Some(Self::Ready),
3683 _ => None,
3684 }
3685 }
3686}
3687#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3692pub struct InviteLink {
3693 #[prost(string, tag="1")]
3695 pub id: ::prost::alloc::string::String,
3696 #[prost(string, tag="2")]
3698 pub token: ::prost::alloc::string::String,
3699 #[prost(string, tag="3")]
3701 pub role_id: ::prost::alloc::string::String,
3702 #[prost(int32, tag="4")]
3705 pub max_uses: i32,
3706 #[prost(int32, tag="5")]
3708 pub use_count: i32,
3709 #[prost(message, optional, tag="6")]
3711 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
3712 #[prost(message, optional, tag="7")]
3714 pub revoked_at: ::core::option::Option<::prost_types::Timestamp>,
3715 #[prost(string, tag="8")]
3717 pub created_by: ::prost::alloc::string::String,
3718 #[prost(message, optional, tag="9")]
3720 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
3721 #[prost(string, tag="10")]
3724 pub data_governance_region: ::prost::alloc::string::String,
3725}
3726#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3728pub struct CreateInviteLinkRequest {
3729 #[prost(string, tag="1")]
3731 pub role_id: ::prost::alloc::string::String,
3732 #[prost(int32, tag="2")]
3734 pub max_uses: i32,
3735 #[prost(int32, tag="3")]
3738 pub expires_in_hours: i32,
3739 #[prost(string, tag="4")]
3742 pub data_governance_region: ::prost::alloc::string::String,
3743}
3744#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3746pub struct CreateInviteLinkResponse {
3747 #[prost(message, optional, tag="1")]
3749 pub invite_link: ::core::option::Option<InviteLink>,
3750 #[prost(string, tag="2")]
3752 pub url: ::prost::alloc::string::String,
3753}
3754#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3756pub struct ListInviteLinksRequest {
3757}
3758#[derive(Clone, PartialEq, ::prost::Message)]
3760pub struct ListInviteLinksResponse {
3761 #[prost(message, repeated, tag="1")]
3763 pub invite_links: ::prost::alloc::vec::Vec<InviteLink>,
3764}
3765#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3767pub struct RevokeInviteLinkRequest {
3768 #[prost(string, tag="1")]
3770 pub invite_link_id: ::prost::alloc::string::String,
3771}
3772#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3774pub struct RevokeInviteLinkResponse {
3775}
3776#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3778pub struct RedeemInviteLinkRequest {
3779 #[prost(string, tag="1")]
3781 pub token: ::prost::alloc::string::String,
3782}
3783#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3785pub struct RedeemInviteLinkResponse {
3786 #[prost(string, tag="1")]
3788 pub organization_name: ::prost::alloc::string::String,
3789}
3790#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3792pub struct ValidateInviteLinkRequest {
3793 #[prost(string, tag="1")]
3795 pub token: ::prost::alloc::string::String,
3796 #[prost(string, tag="2")]
3799 pub email: ::prost::alloc::string::String,
3800}
3801#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3803pub struct ValidateInviteLinkResponse {
3804 #[prost(string, tag="1")]
3806 pub organization_name: ::prost::alloc::string::String,
3807}
3808#[derive(Clone, PartialEq, ::prost::Message)]
3812pub struct InviteUserRequest {
3813 #[prost(string, tag="1")]
3816 pub email: ::prost::alloc::string::String,
3817 #[prost(string, tag="2")]
3820 pub name: ::prost::alloc::string::String,
3821 #[prost(string, tag="4")]
3823 pub role_id: ::prost::alloc::string::String,
3824 #[prost(message, optional, tag="5")]
3826 pub profile: ::core::option::Option<UserProfile>,
3827 #[prost(string, tag="6")]
3830 pub data_governance_region: ::prost::alloc::string::String,
3831}
3832#[derive(Clone, PartialEq, ::prost::Message)]
3834pub struct InviteUserResponse {
3835 #[prost(message, optional, tag="1")]
3837 pub user: ::core::option::Option<User>,
3838}
3839#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3841pub struct GetUserRequest {
3842 #[prost(string, tag="1")]
3844 pub user_id: ::prost::alloc::string::String,
3845}
3846#[derive(Clone, PartialEq, ::prost::Message)]
3848pub struct GetUserResponse {
3849 #[prost(message, optional, tag="1")]
3851 pub user: ::core::option::Option<User>,
3852}
3853#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3855pub struct ListUsersRequest {
3856 #[prost(message, optional, tag="1")]
3858 pub pagination: ::core::option::Option<Pagination>,
3859}
3860#[derive(Clone, PartialEq, ::prost::Message)]
3862pub struct ListUsersResponse {
3863 #[prost(message, repeated, tag="1")]
3865 pub users: ::prost::alloc::vec::Vec<User>,
3866 #[prost(message, optional, tag="2")]
3868 pub pagination_meta: ::core::option::Option<PaginationMeta>,
3869}
3870#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3872pub struct UpdateUserRoleRequest {
3873 #[prost(string, tag="1")]
3875 pub user_id: ::prost::alloc::string::String,
3876 #[prost(string, tag="2")]
3878 pub role_id: ::prost::alloc::string::String,
3879}
3880#[derive(Clone, PartialEq, ::prost::Message)]
3882pub struct UpdateUserRoleResponse {
3883 #[prost(message, optional, tag="1")]
3885 pub user: ::core::option::Option<User>,
3886}
3887#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3889pub struct DeactivateUserRequest {
3890 #[prost(string, tag="1")]
3892 pub user_id: ::prost::alloc::string::String,
3893}
3894#[derive(Clone, PartialEq, ::prost::Message)]
3896pub struct DeactivateUserResponse {
3897 #[prost(message, optional, tag="1")]
3899 pub user: ::core::option::Option<User>,
3900}
3901#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3903pub struct ReactivateUserRequest {
3904 #[prost(string, tag="1")]
3906 pub user_id: ::prost::alloc::string::String,
3907}
3908#[derive(Clone, PartialEq, ::prost::Message)]
3910pub struct ReactivateUserResponse {
3911 #[prost(message, optional, tag="1")]
3913 pub user: ::core::option::Option<User>,
3914}
3915#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3917pub struct RevokeInviteRequest {
3918 #[prost(string, tag="1")]
3921 pub user_id: ::prost::alloc::string::String,
3922}
3923#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3925pub struct RevokeInviteResponse {
3926}
3927#[derive(Clone, PartialEq, ::prost::Message)]
3929pub struct UpdateUserProfileRequest {
3930 #[prost(string, tag="1")]
3933 pub user_id: ::prost::alloc::string::String,
3934 #[prost(message, optional, tag="2")]
3936 pub profile: ::core::option::Option<UserProfile>,
3937}
3938#[derive(Clone, PartialEq, ::prost::Message)]
3940pub struct UpdateUserProfileResponse {
3941 #[prost(message, optional, tag="1")]
3943 pub user: ::core::option::Option<User>,
3944}
3945#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3947pub struct GetUserSettingsRequest {
3948}
3949#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3951pub struct GetUserSettingsResponse {
3952 #[prost(message, optional, tag="1")]
3954 pub settings: ::core::option::Option<UserSettings>,
3955}
3956#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3958pub struct UpdateUserSettingsRequest {
3959 #[prost(message, optional, tag="1")]
3962 pub settings: ::core::option::Option<UserSettings>,
3963}
3964#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3966pub struct UpdateUserSettingsResponse {
3967 #[prost(message, optional, tag="1")]
3969 pub settings: ::core::option::Option<UserSettings>,
3970}
3971#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3973pub struct BulkInviteUsersRequest {
3974 #[prost(string, repeated, tag="1")]
3977 pub emails: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3978 #[prost(string, tag="2")]
3980 pub role_id: ::prost::alloc::string::String,
3981}
3982#[derive(Clone, PartialEq, ::prost::Message)]
3984pub struct BulkInviteResult {
3985 #[prost(string, tag="1")]
3987 pub email: ::prost::alloc::string::String,
3988 #[prost(bool, tag="2")]
3990 pub success: bool,
3991 #[prost(string, tag="3")]
3994 pub error: ::prost::alloc::string::String,
3995 #[prost(message, optional, tag="4")]
3997 pub user: ::core::option::Option<User>,
3998}
3999#[derive(Clone, PartialEq, ::prost::Message)]
4001pub struct BulkInviteUsersResponse {
4002 #[prost(message, repeated, tag="1")]
4004 pub results: ::prost::alloc::vec::Vec<BulkInviteResult>,
4005 #[prost(int32, tag="2")]
4007 pub invited_count: i32,
4008 #[prost(int32, tag="3")]
4010 pub failed_count: i32,
4011}
4012#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4016pub struct ConfirmPasskeyEnrollmentRequest {
4017}
4018#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4020pub struct ConfirmPasskeyEnrollmentResponse {
4021 #[prost(bool, tag="1")]
4023 pub confirmed: bool,
4024}
4025#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4027pub struct UpdateUserRegionRequest {
4028 #[prost(string, tag="1")]
4030 pub user_id: ::prost::alloc::string::String,
4031 #[prost(string, tag="2")]
4034 pub data_governance_region: ::prost::alloc::string::String,
4035}
4036#[derive(Clone, PartialEq, ::prost::Message)]
4038pub struct UpdateUserRegionResponse {
4039 #[prost(message, optional, tag="1")]
4041 pub user: ::core::option::Option<User>,
4042 #[prost(string, tag="2")]
4045 pub migration_workflow_id: ::prost::alloc::string::String,
4046}
4047#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4052pub struct SsoAttributeMapping {
4053 #[prost(string, tag="1")]
4056 pub idp_claim: ::prost::alloc::string::String,
4057 #[prost(string, tag="2")]
4061 pub profile_field: ::prost::alloc::string::String,
4062}
4063#[derive(Clone, PartialEq, ::prost::Message)]
4065pub struct Organization {
4066 #[prost(string, tag="1")]
4068 pub id: ::prost::alloc::string::String,
4069 #[prost(string, tag="2")]
4072 pub name: ::prost::alloc::string::String,
4073 #[prost(message, optional, tag="3")]
4075 pub default_workflow: ::core::option::Option<WorkflowDefinition>,
4076 #[prost(message, optional, tag="4")]
4078 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4079 #[prost(enumeration="Industry", tag="5")]
4081 pub industry: i32,
4082 #[prost(enumeration="CompanySize", tag="6")]
4084 pub company_size: i32,
4085 #[prost(message, repeated, tag="7")]
4088 pub sso_attribute_mappings: ::prost::alloc::vec::Vec<SsoAttributeMapping>,
4089 #[prost(string, tag="8")]
4093 pub default_locale: ::prost::alloc::string::String,
4094 #[prost(enumeration="OrgType", tag="9")]
4096 pub org_type: i32,
4097 #[prost(message, optional, tag="10")]
4099 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4100 #[prost(string, tag="11")]
4103 pub data_governance_region: ::prost::alloc::string::String,
4104 #[prost(string, tag="12")]
4107 pub data_content_region: ::prost::alloc::string::String,
4108 #[prost(int32, tag="13")]
4113 pub ml_retrain_cold_threshold: i32,
4114 #[prost(bool, tag="14")]
4116 pub ml_cancelled_counts: bool,
4117 #[prost(int32, tag="15")]
4119 pub ml_manual_limit_monthly: i32,
4120 #[prost(int32, tag="16")]
4122 pub ml_manual_retrains_used: i32,
4123 #[prost(bool, tag="17")]
4125 pub ml_needs_retrain: bool,
4126 #[prost(int32, tag="18")]
4128 pub campaigns_since_last_training: i32,
4129 #[prost(int32, tag="19")]
4131 pub total_completed_campaigns: i32,
4132 #[prost(message, optional, tag="20")]
4134 pub last_ml_training_at: ::core::option::Option<::prost_types::Timestamp>,
4135}
4136#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4140pub struct CreateOrganizationRequest {
4141 #[prost(string, tag="1")]
4144 pub name: ::prost::alloc::string::String,
4145 #[prost(enumeration="Industry", tag="2")]
4147 pub industry: i32,
4148 #[prost(enumeration="CompanySize", tag="3")]
4150 pub company_size: i32,
4151 #[prost(string, tag="4")]
4154 pub access_code: ::prost::alloc::string::String,
4155 #[prost(string, tag="5")]
4158 pub data_governance_region: ::prost::alloc::string::String,
4159}
4160#[derive(Clone, PartialEq, ::prost::Message)]
4162pub struct CreateOrganizationResponse {
4163 #[prost(message, optional, tag="1")]
4165 pub organization: ::core::option::Option<Organization>,
4166 #[prost(message, optional, tag="2")]
4168 pub admin_user: ::core::option::Option<User>,
4169}
4170#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4172pub struct GetOrganizationRequest {
4173}
4174#[derive(Clone, PartialEq, ::prost::Message)]
4176pub struct GetOrganizationResponse {
4177 #[prost(message, optional, tag="1")]
4179 pub organization: ::core::option::Option<Organization>,
4180}
4181#[derive(Clone, PartialEq, ::prost::Message)]
4183pub struct UpdateOrganizationRequest {
4184 #[prost(string, tag="1")]
4187 pub name: ::prost::alloc::string::String,
4188 #[prost(message, optional, tag="2")]
4190 pub default_workflow: ::core::option::Option<WorkflowDefinition>,
4191 #[prost(enumeration="Industry", tag="3")]
4193 pub industry: i32,
4194 #[prost(enumeration="CompanySize", tag="4")]
4196 pub company_size: i32,
4197 #[prost(string, tag="5")]
4200 pub default_locale: ::prost::alloc::string::String,
4201 #[prost(int32, tag="6")]
4203 pub ml_retrain_cold_threshold: i32,
4204 #[prost(bool, optional, tag="7")]
4207 pub ml_cancelled_counts: ::core::option::Option<bool>,
4208 #[prost(int32, tag="8")]
4211 pub ml_manual_limit_monthly: i32,
4212}
4213#[derive(Clone, PartialEq, ::prost::Message)]
4215pub struct UpdateOrganizationResponse {
4216 #[prost(message, optional, tag="1")]
4218 pub organization: ::core::option::Option<Organization>,
4219}
4220#[derive(Clone, PartialEq, ::prost::Message)]
4222pub struct UpdateSsoAttributeMappingsRequest {
4223 #[prost(message, repeated, tag="1")]
4225 pub sso_attribute_mappings: ::prost::alloc::vec::Vec<SsoAttributeMapping>,
4226}
4227#[derive(Clone, PartialEq, ::prost::Message)]
4229pub struct UpdateSsoAttributeMappingsResponse {
4230 #[prost(message, optional, tag="1")]
4232 pub organization: ::core::option::Option<Organization>,
4233}
4234#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4236pub struct RotateAnalyticsSaltRequest {
4237 #[prost(int32, tag="1")]
4239 pub new_bucket_count: i32,
4240}
4241#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4243pub struct RotateAnalyticsSaltResponse {
4244 #[prost(int32, tag="1")]
4246 pub bucket_count: i32,
4247}
4248#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4250pub struct UpdateAnalyticsEpsilonRequest {
4251 #[prost(float, tag="1")]
4253 pub epsilon: f32,
4254}
4255#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4257pub struct UpdateAnalyticsEpsilonResponse {
4258 #[prost(float, tag="1")]
4260 pub epsilon: f32,
4261}
4262#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4264pub struct CreateSandboxOrganizationRequest {
4265 #[prost(string, tag="1")]
4268 pub name: ::prost::alloc::string::String,
4269 #[prost(message, optional, tag="2")]
4272 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4273 #[prost(string, tag="3")]
4276 pub data_governance_region: ::prost::alloc::string::String,
4277 #[prost(string, tag="4")]
4281 pub fixture_id: ::prost::alloc::string::String,
4282}
4283#[derive(Clone, PartialEq, ::prost::Message)]
4285pub struct CreateSandboxOrganizationResponse {
4286 #[prost(message, optional, tag="1")]
4288 pub organization: ::core::option::Option<Organization>,
4289 #[prost(message, optional, tag="2")]
4291 pub admin_user: ::core::option::Option<User>,
4292}
4293#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4296pub struct DeleteSandboxOrganizationRequest {
4297 #[prost(string, tag="1")]
4299 pub org_id: ::prost::alloc::string::String,
4300}
4301#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4304pub struct DeleteSandboxOrganizationResponse {
4305 #[prost(string, tag="1")]
4307 pub workflow_id: ::prost::alloc::string::String,
4308}
4309#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4311pub struct SandboxFixture {
4312 #[prost(string, tag="1")]
4314 pub id: ::prost::alloc::string::String,
4315 #[prost(string, tag="2")]
4317 pub name: ::prost::alloc::string::String,
4318 #[prost(string, tag="3")]
4320 pub description: ::prost::alloc::string::String,
4321 #[prost(bool, tag="4")]
4324 pub is_default: bool,
4325}
4326#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4329pub struct ListSandboxFixturesRequest {
4330}
4331#[derive(Clone, PartialEq, ::prost::Message)]
4333pub struct ListSandboxFixturesResponse {
4334 #[prost(message, repeated, tag="1")]
4336 pub fixtures: ::prost::alloc::vec::Vec<SandboxFixture>,
4337}
4338#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4341pub struct ListUserOrganizationsRequest {
4342}
4343#[derive(Clone, PartialEq, ::prost::Message)]
4345pub struct ListUserOrganizationsResponse {
4346 #[prost(message, repeated, tag="1")]
4349 pub organizations: ::prost::alloc::vec::Vec<Organization>,
4350}
4351#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4356pub struct ListUserSandboxesRequest {
4357}
4358#[derive(Clone, PartialEq, ::prost::Message)]
4360pub struct ListUserSandboxesResponse {
4361 #[prost(message, repeated, tag="1")]
4366 pub sandboxes: ::prost::alloc::vec::Vec<Organization>,
4367}
4368#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4372#[repr(i32)]
4373pub enum Industry {
4374 Unspecified = 0,
4375 Technology = 1,
4376 Finance = 2,
4377 Healthcare = 3,
4378 Education = 4,
4379 Retail = 5,
4380 Manufacturing = 6,
4381 Media = 7,
4382 Other = 8,
4383}
4384impl Industry {
4385 pub fn as_str_name(&self) -> &'static str {
4390 match self {
4391 Self::Unspecified => "INDUSTRY_UNSPECIFIED",
4392 Self::Technology => "INDUSTRY_TECHNOLOGY",
4393 Self::Finance => "INDUSTRY_FINANCE",
4394 Self::Healthcare => "INDUSTRY_HEALTHCARE",
4395 Self::Education => "INDUSTRY_EDUCATION",
4396 Self::Retail => "INDUSTRY_RETAIL",
4397 Self::Manufacturing => "INDUSTRY_MANUFACTURING",
4398 Self::Media => "INDUSTRY_MEDIA",
4399 Self::Other => "INDUSTRY_OTHER",
4400 }
4401 }
4402 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4404 match value {
4405 "INDUSTRY_UNSPECIFIED" => Some(Self::Unspecified),
4406 "INDUSTRY_TECHNOLOGY" => Some(Self::Technology),
4407 "INDUSTRY_FINANCE" => Some(Self::Finance),
4408 "INDUSTRY_HEALTHCARE" => Some(Self::Healthcare),
4409 "INDUSTRY_EDUCATION" => Some(Self::Education),
4410 "INDUSTRY_RETAIL" => Some(Self::Retail),
4411 "INDUSTRY_MANUFACTURING" => Some(Self::Manufacturing),
4412 "INDUSTRY_MEDIA" => Some(Self::Media),
4413 "INDUSTRY_OTHER" => Some(Self::Other),
4414 _ => None,
4415 }
4416 }
4417}
4418#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4420#[repr(i32)]
4421pub enum CompanySize {
4422 Unspecified = 0,
4423 CompanySize1200 = 1,
4424 CompanySize200500 = 2,
4425 CompanySize5001000 = 3,
4426 CompanySize10005000 = 4,
4427 CompanySize5000Plus = 5,
4428}
4429impl CompanySize {
4430 pub fn as_str_name(&self) -> &'static str {
4435 match self {
4436 Self::Unspecified => "COMPANY_SIZE_UNSPECIFIED",
4437 Self::CompanySize1200 => "COMPANY_SIZE_1_200",
4438 Self::CompanySize200500 => "COMPANY_SIZE_200_500",
4439 Self::CompanySize5001000 => "COMPANY_SIZE_500_1000",
4440 Self::CompanySize10005000 => "COMPANY_SIZE_1000_5000",
4441 Self::CompanySize5000Plus => "COMPANY_SIZE_5000_PLUS",
4442 }
4443 }
4444 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4446 match value {
4447 "COMPANY_SIZE_UNSPECIFIED" => Some(Self::Unspecified),
4448 "COMPANY_SIZE_1_200" => Some(Self::CompanySize1200),
4449 "COMPANY_SIZE_200_500" => Some(Self::CompanySize200500),
4450 "COMPANY_SIZE_500_1000" => Some(Self::CompanySize5001000),
4451 "COMPANY_SIZE_1000_5000" => Some(Self::CompanySize10005000),
4452 "COMPANY_SIZE_5000_PLUS" => Some(Self::CompanySize5000Plus),
4453 _ => None,
4454 }
4455 }
4456}
4457#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4459#[repr(i32)]
4460pub enum OrgType {
4461 Unspecified = 0,
4462 Standard = 1,
4463 Sandbox = 2,
4464 Staff = 3,
4467}
4468impl OrgType {
4469 pub fn as_str_name(&self) -> &'static str {
4474 match self {
4475 Self::Unspecified => "ORG_TYPE_UNSPECIFIED",
4476 Self::Standard => "ORG_TYPE_STANDARD",
4477 Self::Sandbox => "ORG_TYPE_SANDBOX",
4478 Self::Staff => "ORG_TYPE_STAFF",
4479 }
4480 }
4481 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4483 match value {
4484 "ORG_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
4485 "ORG_TYPE_STANDARD" => Some(Self::Standard),
4486 "ORG_TYPE_SANDBOX" => Some(Self::Sandbox),
4487 "ORG_TYPE_STAFF" => Some(Self::Staff),
4488 _ => None,
4489 }
4490 }
4491}
4492#[derive(Clone, PartialEq, ::prost::Message)]
4496pub struct UserRenderContext {
4497 #[prost(string, tag="1")]
4499 pub user_id: ::prost::alloc::string::String,
4500 #[prost(map="string, string", tag="2")]
4503 pub variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4504}
4505#[derive(Clone, PartialEq, ::prost::Message)]
4507pub struct RenderBatchRequest {
4508 #[prost(string, tag="1")]
4510 pub template_id: ::prost::alloc::string::String,
4511 #[prost(int32, tag="2")]
4513 pub version: i32,
4514 #[prost(message, repeated, tag="3")]
4517 pub users: ::prost::alloc::vec::Vec<UserRenderContext>,
4518}
4519#[derive(Clone, PartialEq, ::prost::Message)]
4522pub struct RenderBatchResponse {
4523 #[prost(string, tag="1")]
4525 pub user_id: ::prost::alloc::string::String,
4526 #[prost(message, optional, tag="2")]
4528 pub message: ::core::option::Option<Message>,
4529 #[prost(string, tag="3")]
4531 pub error: ::prost::alloc::string::String,
4532}
4533#[derive(Clone, PartialEq, ::prost::Message)]
4538pub struct SessionRecording {
4539 #[prost(string, tag="1")]
4541 pub id: ::prost::alloc::string::String,
4542 #[prost(message, optional, tag="2")]
4544 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
4545 #[prost(message, optional, tag="3")]
4547 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
4548 #[prost(int32, tag="4")]
4550 pub duration_seconds: i32,
4551 #[prost(float, tag="5")]
4553 pub activity_score: f32,
4554}
4555#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4557pub struct ListSessionRecordingsRequest {
4558 #[prost(string, tag="1")]
4561 pub campaign_id: ::prost::alloc::string::String,
4562 #[prost(message, optional, tag="2")]
4564 pub date_from: ::core::option::Option<::prost_types::Timestamp>,
4565 #[prost(message, optional, tag="3")]
4567 pub date_to: ::core::option::Option<::prost_types::Timestamp>,
4568 #[prost(message, optional, tag="4")]
4570 pub pagination: ::core::option::Option<Pagination>,
4571}
4572#[derive(Clone, PartialEq, ::prost::Message)]
4574pub struct ListSessionRecordingsResponse {
4575 #[prost(message, repeated, tag="1")]
4577 pub recordings: ::prost::alloc::vec::Vec<SessionRecording>,
4578 #[prost(message, optional, tag="2")]
4580 pub pagination_meta: ::core::option::Option<PaginationMeta>,
4581}
4582#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4584pub struct GetSessionSnapshotsRequest {
4585 #[prost(string, tag="1")]
4588 pub recording_id: ::prost::alloc::string::String,
4589}
4590#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4592pub struct GetSessionSnapshotsResponse {
4593 #[prost(string, tag="1")]
4596 pub snapshot_data: ::prost::alloc::string::String,
4597}
4598#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4602pub struct ListRolesRequest {
4603}
4604#[derive(Clone, PartialEq, ::prost::Message)]
4606pub struct ListRolesResponse {
4607 #[prost(message, repeated, tag="1")]
4609 pub roles: ::prost::alloc::vec::Vec<Role>,
4610}
4611#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4613pub struct CreateRoleRequest {
4614 #[prost(string, tag="1")]
4617 pub name: ::prost::alloc::string::String,
4618 #[prost(enumeration="Permission", repeated, tag="2")]
4621 pub permissions: ::prost::alloc::vec::Vec<i32>,
4622}
4623#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4625pub struct CreateRoleResponse {
4626 #[prost(message, optional, tag="1")]
4628 pub role: ::core::option::Option<Role>,
4629}
4630#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4632pub struct UpdateRoleRequest {
4633 #[prost(string, tag="1")]
4635 pub role_id: ::prost::alloc::string::String,
4636 #[prost(string, tag="2")]
4638 pub name: ::prost::alloc::string::String,
4639 #[prost(enumeration="Permission", repeated, tag="3")]
4643 pub permissions: ::prost::alloc::vec::Vec<i32>,
4644}
4645#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4647pub struct UpdateRoleResponse {
4648 #[prost(message, optional, tag="1")]
4650 pub role: ::core::option::Option<Role>,
4651}
4652#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4654pub struct DeleteRoleRequest {
4655 #[prost(string, tag="1")]
4657 pub role_id: ::prost::alloc::string::String,
4658}
4659#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4661pub struct DeleteRoleResponse {
4662}
4663#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4669pub struct SamlAttributeNames {
4670 #[prost(string, tag="1")]
4672 pub email: ::prost::alloc::string::String,
4673 #[prost(string, tag="2")]
4675 pub given_name: ::prost::alloc::string::String,
4676 #[prost(string, tag="3")]
4678 pub family_name: ::prost::alloc::string::String,
4679}
4680#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4682pub struct SsoProvider {
4683 #[prost(string, tag="1")]
4685 pub id: ::prost::alloc::string::String,
4686 #[prost(string, tag="2")]
4689 pub domain: ::prost::alloc::string::String,
4690 #[prost(enumeration="SsoProviderType", tag="3")]
4692 pub r#type: i32,
4693 #[prost(string, tag="4")]
4696 pub metadata_url: ::prost::alloc::string::String,
4697 #[prost(string, tag="5")]
4700 pub idp_provider_name: ::prost::alloc::string::String,
4701 #[prost(message, optional, tag="6")]
4703 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4704 #[prost(message, optional, tag="7")]
4706 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
4707 #[prost(message, optional, tag="8")]
4709 pub attribute_mapping: ::core::option::Option<SamlAttributeNames>,
4710}
4711#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4714pub struct CheckSsoByDomainRequest {
4715 #[prost(string, tag="1")]
4718 pub email: ::prost::alloc::string::String,
4719}
4720#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4722pub struct CheckSsoByDomainResponse {
4723 #[prost(bool, tag="1")]
4725 pub sso_enabled: bool,
4726 #[prost(string, tag="2")]
4729 pub provider_name: ::prost::alloc::string::String,
4730}
4731#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4733pub struct CreateSsoProviderRequest {
4734 #[prost(string, tag="1")]
4737 pub domain: ::prost::alloc::string::String,
4738 #[prost(enumeration="SsoProviderType", tag="2")]
4740 pub r#type: i32,
4741 #[prost(string, tag="3")]
4744 pub metadata_url: ::prost::alloc::string::String,
4745 #[prost(message, optional, tag="4")]
4748 pub attribute_mapping: ::core::option::Option<SamlAttributeNames>,
4749}
4750#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4752pub struct CreateSsoProviderResponse {
4753 #[prost(message, optional, tag="1")]
4755 pub provider: ::core::option::Option<SsoProvider>,
4756}
4757#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4760pub struct GetSsoProviderRequest {
4761}
4762#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4764pub struct GetSsoProviderResponse {
4765 #[prost(message, optional, tag="1")]
4767 pub provider: ::core::option::Option<SsoProvider>,
4768}
4769#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4771pub struct DeleteSsoProviderRequest {
4772 #[prost(string, tag="1")]
4774 pub provider_id: ::prost::alloc::string::String,
4775}
4776#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4778pub struct DeleteSsoProviderResponse {
4779}
4780#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4784#[repr(i32)]
4785pub enum SsoProviderType {
4786 Unspecified = 0,
4788 Saml = 1,
4790 Oidc = 2,
4792}
4793impl SsoProviderType {
4794 pub fn as_str_name(&self) -> &'static str {
4799 match self {
4800 Self::Unspecified => "SSO_PROVIDER_TYPE_UNSPECIFIED",
4801 Self::Saml => "SSO_PROVIDER_TYPE_SAML",
4802 Self::Oidc => "SSO_PROVIDER_TYPE_OIDC",
4803 }
4804 }
4805 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4807 match value {
4808 "SSO_PROVIDER_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
4809 "SSO_PROVIDER_TYPE_SAML" => Some(Self::Saml),
4810 "SSO_PROVIDER_TYPE_OIDC" => Some(Self::Oidc),
4811 _ => None,
4812 }
4813 }
4814}
4815#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4821pub struct Team {
4822 #[prost(string, tag="1")]
4824 pub id: ::prost::alloc::string::String,
4825 #[prost(string, tag="2")]
4828 pub name: ::prost::alloc::string::String,
4829 #[prost(string, tag="3")]
4832 pub description: ::prost::alloc::string::String,
4833 #[prost(int32, tag="4")]
4835 pub member_count: i32,
4836 #[prost(message, optional, tag="5")]
4838 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4839 #[prost(message, optional, tag="6")]
4841 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
4842 #[prost(bool, tag="7")]
4844 pub is_default: bool,
4845 #[prost(string, tag="8")]
4847 pub created_by: ::prost::alloc::string::String,
4848}
4849#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4851pub struct CreateTeamRequest {
4852 #[prost(string, tag="1")]
4855 pub name: ::prost::alloc::string::String,
4856 #[prost(string, tag="2")]
4859 pub description: ::prost::alloc::string::String,
4860}
4861#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4863pub struct CreateTeamResponse {
4864 #[prost(message, optional, tag="1")]
4866 pub team: ::core::option::Option<Team>,
4867}
4868#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4870pub struct GetTeamRequest {
4871 #[prost(string, tag="1")]
4873 pub team_id: ::prost::alloc::string::String,
4874}
4875#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4877pub struct GetTeamResponse {
4878 #[prost(message, optional, tag="1")]
4880 pub team: ::core::option::Option<Team>,
4881}
4882#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4884pub struct ListTeamsRequest {
4885 #[prost(message, optional, tag="1")]
4887 pub pagination: ::core::option::Option<Pagination>,
4888}
4889#[derive(Clone, PartialEq, ::prost::Message)]
4891pub struct ListTeamsResponse {
4892 #[prost(message, repeated, tag="1")]
4894 pub teams: ::prost::alloc::vec::Vec<Team>,
4895 #[prost(message, optional, tag="2")]
4897 pub pagination_meta: ::core::option::Option<PaginationMeta>,
4898}
4899#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4901pub struct UpdateTeamRequest {
4902 #[prost(string, tag="1")]
4904 pub team_id: ::prost::alloc::string::String,
4905 #[prost(string, tag="2")]
4909 pub name: ::prost::alloc::string::String,
4910 #[prost(string, tag="3")]
4913 pub description: ::prost::alloc::string::String,
4914}
4915#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4917pub struct UpdateTeamResponse {
4918 #[prost(message, optional, tag="1")]
4920 pub team: ::core::option::Option<Team>,
4921}
4922#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4924pub struct DeleteTeamRequest {
4925 #[prost(string, tag="1")]
4928 pub team_id: ::prost::alloc::string::String,
4929}
4930#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4932pub struct DeleteTeamResponse {
4933}
4934#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4936pub struct AddTeamMembersRequest {
4937 #[prost(string, tag="1")]
4939 pub team_id: ::prost::alloc::string::String,
4940 #[prost(string, repeated, tag="2")]
4944 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4945}
4946#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4948pub struct AddTeamMembersResponse {
4949 #[prost(message, optional, tag="1")]
4951 pub team: ::core::option::Option<Team>,
4952}
4953#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4955pub struct RemoveTeamMembersRequest {
4956 #[prost(string, tag="1")]
4958 pub team_id: ::prost::alloc::string::String,
4959 #[prost(string, repeated, tag="2")]
4962 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4963}
4964#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4966pub struct RemoveTeamMembersResponse {
4967 #[prost(message, optional, tag="1")]
4969 pub team: ::core::option::Option<Team>,
4970}
4971#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4973pub struct ListTeamMembersRequest {
4974 #[prost(string, tag="1")]
4976 pub team_id: ::prost::alloc::string::String,
4977 #[prost(message, optional, tag="2")]
4979 pub pagination: ::core::option::Option<Pagination>,
4980}
4981#[derive(Clone, PartialEq, ::prost::Message)]
4983pub struct ListTeamMembersResponse {
4984 #[prost(message, repeated, tag="1")]
4986 pub users: ::prost::alloc::vec::Vec<User>,
4987 #[prost(message, optional, tag="2")]
4989 pub pagination_meta: ::core::option::Option<PaginationMeta>,
4990}
4991#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4995pub struct TemplateVariable {
4996 #[prost(string, tag="1")]
4999 pub name: ::prost::alloc::string::String,
5000 #[prost(string, tag="2")]
5003 pub description: ::prost::alloc::string::String,
5004 #[prost(bool, tag="3")]
5006 pub required: bool,
5007 #[prost(enumeration="TemplateVariableSource", tag="4")]
5009 pub source: i32,
5010 #[prost(string, tag="5")]
5013 pub default_value: ::prost::alloc::string::String,
5014 #[prost(bool, tag="6")]
5017 pub pii: bool,
5018}
5019#[derive(Clone, PartialEq, ::prost::Message)]
5022pub struct Template {
5023 #[prost(string, tag="1")]
5025 pub id: ::prost::alloc::string::String,
5026 #[prost(string, tag="2")]
5029 pub name: ::prost::alloc::string::String,
5030 #[prost(string, tag="3")]
5033 pub body: ::prost::alloc::string::String,
5034 #[prost(message, repeated, tag="4")]
5036 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5037 #[prost(int32, tag="5")]
5039 pub version: i32,
5040 #[prost(message, optional, tag="6")]
5042 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5043 #[prost(message, optional, tag="7")]
5045 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
5046 #[prost(string, tag="8")]
5050 pub title: ::prost::alloc::string::String,
5051 #[prost(enumeration="TemplateType", tag="9")]
5054 pub r#type: i32,
5055 #[prost(string, tag="10")]
5059 pub source_locale: ::prost::alloc::string::String,
5060}
5061#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5064pub struct TemplateTranslation {
5065 #[prost(string, tag="1")]
5067 pub id: ::prost::alloc::string::String,
5068 #[prost(string, tag="2")]
5070 pub template_id: ::prost::alloc::string::String,
5071 #[prost(int32, tag="3")]
5073 pub version: i32,
5074 #[prost(string, tag="4")]
5076 pub locale: ::prost::alloc::string::String,
5077 #[prost(string, tag="5")]
5080 pub title: ::prost::alloc::string::String,
5081 #[prost(string, tag="6")]
5084 pub body: ::prost::alloc::string::String,
5085 #[prost(enumeration="TranslationStatus", tag="7")]
5087 pub status: i32,
5088 #[prost(string, tag="8")]
5090 pub translated_by: ::prost::alloc::string::String,
5091 #[prost(string, tag="9")]
5093 pub reviewed_by: ::prost::alloc::string::String,
5094 #[prost(message, optional, tag="10")]
5096 pub reviewed_at: ::core::option::Option<::prost_types::Timestamp>,
5097 #[prost(message, optional, tag="11")]
5099 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5100}
5101#[derive(Clone, PartialEq, ::prost::Message)]
5103pub struct CreateTemplateRequest {
5104 #[prost(string, tag="1")]
5107 pub name: ::prost::alloc::string::String,
5108 #[prost(string, tag="2")]
5111 pub body: ::prost::alloc::string::String,
5112 #[prost(message, repeated, tag="3")]
5114 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5115 #[prost(string, tag="4")]
5118 pub title: ::prost::alloc::string::String,
5119 #[prost(enumeration="TemplateType", tag="5")]
5121 pub r#type: i32,
5122 #[prost(string, tag="6")]
5125 pub source_locale: ::prost::alloc::string::String,
5126}
5127#[derive(Clone, PartialEq, ::prost::Message)]
5129pub struct CreateTemplateResponse {
5130 #[prost(message, optional, tag="1")]
5132 pub template: ::core::option::Option<Template>,
5133}
5134#[derive(Clone, PartialEq, ::prost::Message)]
5136pub struct UpdateTemplateRequest {
5137 #[prost(string, tag="1")]
5139 pub template_id: ::prost::alloc::string::String,
5140 #[prost(string, tag="2")]
5143 pub body: ::prost::alloc::string::String,
5144 #[prost(message, repeated, tag="3")]
5146 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5147}
5148#[derive(Clone, PartialEq, ::prost::Message)]
5150pub struct UpdateTemplateResponse {
5151 #[prost(message, optional, tag="1")]
5153 pub template: ::core::option::Option<Template>,
5154}
5155#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5157pub struct GetTemplateRequest {
5158 #[prost(string, tag="1")]
5160 pub template_id: ::prost::alloc::string::String,
5161 #[prost(int32, tag="2")]
5163 pub version: i32,
5164}
5165#[derive(Clone, PartialEq, ::prost::Message)]
5167pub struct GetTemplateResponse {
5168 #[prost(message, optional, tag="1")]
5170 pub template: ::core::option::Option<Template>,
5171}
5172#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5174pub struct ListTemplatesRequest {
5175 #[prost(message, optional, tag="1")]
5177 pub pagination: ::core::option::Option<Pagination>,
5178 #[prost(enumeration="TemplateType", tag="2")]
5180 pub r#type: i32,
5181}
5182#[derive(Clone, PartialEq, ::prost::Message)]
5184pub struct ListTemplatesResponse {
5185 #[prost(message, repeated, tag="1")]
5187 pub templates: ::prost::alloc::vec::Vec<Template>,
5188 #[prost(message, optional, tag="2")]
5190 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5191}
5192#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5194pub struct CreateTemplateTranslationRequest {
5195 #[prost(string, tag="1")]
5197 pub template_id: ::prost::alloc::string::String,
5198 #[prost(int32, tag="2")]
5200 pub version: i32,
5201 #[prost(string, tag="3")]
5203 pub locale: ::prost::alloc::string::String,
5204 #[prost(string, tag="4")]
5206 pub title: ::prost::alloc::string::String,
5207 #[prost(string, tag="5")]
5209 pub body: ::prost::alloc::string::String,
5210 #[prost(string, tag="6")]
5212 pub translated_by: ::prost::alloc::string::String,
5213 #[prost(enumeration="TranslationStatus", tag="7")]
5215 pub status: i32,
5216}
5217#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5219pub struct CreateTemplateTranslationResponse {
5220 #[prost(message, optional, tag="1")]
5222 pub translation: ::core::option::Option<TemplateTranslation>,
5223}
5224#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5226pub struct UpdateTemplateTranslationRequest {
5227 #[prost(string, tag="1")]
5229 pub translation_id: ::prost::alloc::string::String,
5230 #[prost(string, tag="2")]
5232 pub title: ::prost::alloc::string::String,
5233 #[prost(string, tag="3")]
5235 pub body: ::prost::alloc::string::String,
5236 #[prost(enumeration="TranslationStatus", tag="4")]
5238 pub status: i32,
5239}
5240#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5242pub struct UpdateTemplateTranslationResponse {
5243 #[prost(message, optional, tag="1")]
5245 pub translation: ::core::option::Option<TemplateTranslation>,
5246}
5247#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5249pub struct ListTemplateTranslationsRequest {
5250 #[prost(string, tag="1")]
5252 pub template_id: ::prost::alloc::string::String,
5253 #[prost(int32, tag="2")]
5255 pub version: i32,
5256}
5257#[derive(Clone, PartialEq, ::prost::Message)]
5259pub struct ListTemplateTranslationsResponse {
5260 #[prost(message, repeated, tag="1")]
5262 pub translations: ::prost::alloc::vec::Vec<TemplateTranslation>,
5263}
5264#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5266pub struct ApproveTemplateTranslationRequest {
5267 #[prost(string, tag="1")]
5269 pub translation_id: ::prost::alloc::string::String,
5270}
5271#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5273pub struct ApproveTemplateTranslationResponse {
5274 #[prost(message, optional, tag="1")]
5276 pub translation: ::core::option::Option<TemplateTranslation>,
5277}
5278#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5282#[repr(i32)]
5283pub enum TemplateType {
5284 Unspecified = 0,
5286 Markdown = 1,
5288 Rich = 2,
5290 Html = 3,
5292}
5293impl TemplateType {
5294 pub fn as_str_name(&self) -> &'static str {
5299 match self {
5300 Self::Unspecified => "TEMPLATE_TYPE_UNSPECIFIED",
5301 Self::Markdown => "TEMPLATE_TYPE_MARKDOWN",
5302 Self::Rich => "TEMPLATE_TYPE_RICH",
5303 Self::Html => "TEMPLATE_TYPE_HTML",
5304 }
5305 }
5306 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5308 match value {
5309 "TEMPLATE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
5310 "TEMPLATE_TYPE_MARKDOWN" => Some(Self::Markdown),
5311 "TEMPLATE_TYPE_RICH" => Some(Self::Rich),
5312 "TEMPLATE_TYPE_HTML" => Some(Self::Html),
5313 _ => None,
5314 }
5315 }
5316}
5317#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5319#[repr(i32)]
5320pub enum TemplateVariableSource {
5321 Unspecified = 0,
5323 Profile = 1,
5325 Custom = 2,
5327}
5328impl TemplateVariableSource {
5329 pub fn as_str_name(&self) -> &'static str {
5334 match self {
5335 Self::Unspecified => "TEMPLATE_VARIABLE_SOURCE_UNSPECIFIED",
5336 Self::Profile => "TEMPLATE_VARIABLE_SOURCE_PROFILE",
5337 Self::Custom => "TEMPLATE_VARIABLE_SOURCE_CUSTOM",
5338 }
5339 }
5340 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5342 match value {
5343 "TEMPLATE_VARIABLE_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
5344 "TEMPLATE_VARIABLE_SOURCE_PROFILE" => Some(Self::Profile),
5345 "TEMPLATE_VARIABLE_SOURCE_CUSTOM" => Some(Self::Custom),
5346 _ => None,
5347 }
5348 }
5349}
5350#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5352#[repr(i32)]
5353pub enum TranslationStatus {
5354 Unspecified = 0,
5355 Draft = 1,
5357 AiTranslated = 2,
5359 InReview = 3,
5361 Approved = 4,
5363}
5364impl TranslationStatus {
5365 pub fn as_str_name(&self) -> &'static str {
5370 match self {
5371 Self::Unspecified => "TRANSLATION_STATUS_UNSPECIFIED",
5372 Self::Draft => "TRANSLATION_STATUS_DRAFT",
5373 Self::AiTranslated => "TRANSLATION_STATUS_AI_TRANSLATED",
5374 Self::InReview => "TRANSLATION_STATUS_IN_REVIEW",
5375 Self::Approved => "TRANSLATION_STATUS_APPROVED",
5376 }
5377 }
5378 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5380 match value {
5381 "TRANSLATION_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
5382 "TRANSLATION_STATUS_DRAFT" => Some(Self::Draft),
5383 "TRANSLATION_STATUS_AI_TRANSLATED" => Some(Self::AiTranslated),
5384 "TRANSLATION_STATUS_IN_REVIEW" => Some(Self::InReview),
5385 "TRANSLATION_STATUS_APPROVED" => Some(Self::Approved),
5386 _ => None,
5387 }
5388 }
5389}
5390#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5395pub struct DeeplinkTokenPayload {
5396 #[prost(string, tag="1")]
5399 pub campaign_id: ::prost::alloc::string::String,
5400 #[prost(string, tag="2")]
5406 pub recipient_user_id: ::prost::alloc::string::String,
5407 #[prost(enumeration="ChannelStepKind", tag="3")]
5411 pub step_kind: i32,
5412 #[prost(message, optional, tag="4")]
5415 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
5416}
5417#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5418pub struct SignDeeplinkTokenRequest {
5419 #[prost(string, tag="1")]
5422 pub campaign_id: ::prost::alloc::string::String,
5423 #[prost(string, tag="2")]
5426 pub recipient_user_id: ::prost::alloc::string::String,
5427 #[prost(enumeration="ChannelStepKind", tag="3")]
5429 pub step_kind: i32,
5430 #[prost(int64, tag="4")]
5435 pub ttl_seconds: i64,
5436}
5437#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5438pub struct SignDeeplinkTokenResponse {
5439 #[prost(string, tag="1")]
5445 pub token: ::prost::alloc::string::String,
5446 #[prost(message, optional, tag="2")]
5449 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
5450 #[prost(int32, tag="3")]
5454 pub key_version: i32,
5455}
5456#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5457pub struct ValidateDeeplinkTokenRequest {
5458 #[prost(string, tag="1")]
5461 pub token: ::prost::alloc::string::String,
5462 #[prost(string, tag="2")]
5469 pub campaign_id: ::prost::alloc::string::String,
5470}
5471#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5472pub struct ValidateDeeplinkTokenResponse {
5473 #[prost(bool, tag="1")]
5476 pub valid: bool,
5477 #[prost(enumeration="ValidationFailureReason", tag="2")]
5481 pub failure_reason: i32,
5482 #[prost(message, optional, tag="3")]
5486 pub payload: ::core::option::Option<DeeplinkTokenPayload>,
5487}
5488#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5492#[repr(i32)]
5493pub enum ValidationFailureReason {
5494 Unspecified = 0,
5495 InvalidSignature = 1,
5498 Expired = 2,
5500 KeyRetired = 3,
5506 Malformed = 4,
5510}
5511impl ValidationFailureReason {
5512 pub fn as_str_name(&self) -> &'static str {
5517 match self {
5518 Self::Unspecified => "VALIDATION_FAILURE_REASON_UNSPECIFIED",
5519 Self::InvalidSignature => "VALIDATION_FAILURE_REASON_INVALID_SIGNATURE",
5520 Self::Expired => "VALIDATION_FAILURE_REASON_EXPIRED",
5521 Self::KeyRetired => "VALIDATION_FAILURE_REASON_KEY_RETIRED",
5522 Self::Malformed => "VALIDATION_FAILURE_REASON_MALFORMED",
5523 }
5524 }
5525 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5527 match value {
5528 "VALIDATION_FAILURE_REASON_UNSPECIFIED" => Some(Self::Unspecified),
5529 "VALIDATION_FAILURE_REASON_INVALID_SIGNATURE" => Some(Self::InvalidSignature),
5530 "VALIDATION_FAILURE_REASON_EXPIRED" => Some(Self::Expired),
5531 "VALIDATION_FAILURE_REASON_KEY_RETIRED" => Some(Self::KeyRetired),
5532 "VALIDATION_FAILURE_REASON_MALFORMED" => Some(Self::Malformed),
5533 _ => None,
5534 }
5535 }
5536}
5537include!("pidgr.v1.tonic.rs");
5538