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)]
100pub struct Role {
101 #[prost(string, tag="1")]
103 pub id: ::prost::alloc::string::String,
104 #[prost(string, tag="2")]
106 pub slug: ::prost::alloc::string::String,
107 #[prost(string, tag="3")]
109 pub name: ::prost::alloc::string::String,
110 #[prost(bool, tag="4")]
112 pub is_default: bool,
113 #[prost(enumeration="Permission", repeated, tag="5")]
115 pub permissions: ::prost::alloc::vec::Vec<i32>,
116 #[prost(bool, tag="6")]
118 pub is_system: bool,
119}
120#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
124pub struct Pagination {
125 #[prost(int32, tag="1")]
127 pub page_size: i32,
128 #[prost(string, tag="2")]
130 pub page_token: ::prost::alloc::string::String,
131}
132#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
134pub struct PaginationMeta {
135 #[prost(string, tag="1")]
137 pub next_page_token: ::prost::alloc::string::String,
138 #[prost(int32, tag="2")]
140 pub total_count: i32,
141}
142#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
146pub struct MessageAction {
147 #[prost(string, tag="1")]
149 pub id: ::prost::alloc::string::String,
150 #[prost(enumeration="ActionType", tag="2")]
152 pub r#type: i32,
153 #[prost(string, tag="3")]
156 pub label: ::prost::alloc::string::String,
157}
158#[derive(Clone, PartialEq, ::prost::Message)]
161pub struct Message {
162 #[prost(string, tag="1")]
164 pub content_id: ::prost::alloc::string::String,
165 #[prost(string, tag="2")]
167 pub campaign_id: ::prost::alloc::string::String,
168 #[prost(string, tag="3")]
171 pub sender_name: ::prost::alloc::string::String,
172 #[prost(string, tag="4")]
175 pub summary: ::prost::alloc::string::String,
176 #[prost(string, tag="5")]
179 pub preview: ::prost::alloc::string::String,
180 #[prost(string, tag="6")]
183 pub body: ::prost::alloc::string::String,
184 #[prost(bool, tag="7")]
186 pub critical: bool,
187 #[prost(message, repeated, tag="8")]
189 pub actions: ::prost::alloc::vec::Vec<MessageAction>,
190 #[prost(message, optional, tag="9")]
192 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
193 #[prost(string, tag="10")]
196 pub title: ::prost::alloc::string::String,
197}
198#[derive(Clone, PartialEq, ::prost::Message)]
204pub struct WorkflowDefinition {
205 #[prost(message, repeated, tag="1")]
208 pub steps: ::prost::alloc::vec::Vec<WorkflowStep>,
209}
210#[derive(Clone, PartialEq, ::prost::Message)]
212pub struct WorkflowStep {
213 #[prost(string, tag="1")]
215 pub id: ::prost::alloc::string::String,
216 #[prost(enumeration="StepType", tag="2")]
218 pub r#type: i32,
219 #[prost(map="string, string", tag="7")]
222 pub transitions: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
223 #[prost(oneof="workflow_step::Config", tags="3, 4, 5, 6, 8")]
225 pub config: ::core::option::Option<workflow_step::Config>,
226}
227pub mod workflow_step {
229 #[derive(Clone, PartialEq, ::prost::Oneof)]
231 pub enum Config {
232 #[prost(message, tag="3")]
234 SendNotification(super::SendNotificationConfig),
235 #[prost(message, tag="4")]
237 DeadlineCheck(super::DeadlineCheckConfig),
238 #[prost(message, tag="5")]
240 SendReminder(super::SendReminderConfig),
241 #[prost(message, tag="6")]
243 CallWebhook(super::CallWebhookConfig),
244 #[prost(message, tag="8")]
246 EscalateConfig(super::EscalateConfig),
247 }
248}
249#[derive(Clone, PartialEq, ::prost::Message)]
251pub struct SendNotificationConfig {
252 #[prost(string, tag="1")]
255 pub r#type: ::prost::alloc::string::String,
256 #[prost(string, tag="2")]
260 pub template_id: ::prost::alloc::string::String,
261 #[prost(int32, tag="3")]
264 pub template_version: i32,
265 #[prost(string, tag="4")]
268 pub action_label: ::prost::alloc::string::String,
269 #[prost(enumeration="ActionType", tag="5")]
271 pub action_type: i32,
272 #[prost(map="string, string", tag="6")]
275 pub custom_variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
276}
277#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
281pub struct DeadlineCheckConfig {
282 #[prost(string, tag="1")]
285 pub delay: ::prost::alloc::string::String,
286}
287#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
289pub struct SendReminderConfig {
290 #[prost(string, tag="1")]
293 pub r#type: ::prost::alloc::string::String,
294}
295#[derive(Clone, PartialEq, ::prost::Message)]
297pub struct CallWebhookConfig {
298 #[prost(string, tag="1")]
301 pub name: ::prost::alloc::string::String,
302 #[prost(string, tag="2")]
307 pub url: ::prost::alloc::string::String,
308 #[prost(map="string, string", tag="3")]
311 pub headers: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
312}
313#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
315pub struct EscalationTarget {
316 #[prost(enumeration="EscalationTargetType", tag="1")]
318 pub r#type: i32,
319 #[prost(string, tag="2")]
322 pub target_id: ::prost::alloc::string::String,
323}
324#[derive(Clone, PartialEq, ::prost::Message)]
326pub struct EscalateConfig {
327 #[prost(enumeration="EscalationCondition", tag="1")]
329 pub condition: i32,
330 #[prost(message, repeated, tag="2")]
332 pub targets: ::prost::alloc::vec::Vec<EscalationTarget>,
333 #[prost(int32, tag="3")]
336 pub repeat_count: i32,
337 #[prost(int32, tag="4")]
339 pub repeat_interval_minutes: i32,
340 #[prost(enumeration="EscalateMode", tag="5")]
342 pub mode: i32,
343}
344#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
348#[repr(i32)]
349pub enum CampaignStatus {
350 Unspecified = 0,
352 Created = 1,
354 Running = 2,
356 Completed = 3,
358 Failed = 4,
360 Cancelled = 5,
362}
363impl CampaignStatus {
364 pub fn as_str_name(&self) -> &'static str {
369 match self {
370 Self::Unspecified => "CAMPAIGN_STATUS_UNSPECIFIED",
371 Self::Created => "CAMPAIGN_STATUS_CREATED",
372 Self::Running => "CAMPAIGN_STATUS_RUNNING",
373 Self::Completed => "CAMPAIGN_STATUS_COMPLETED",
374 Self::Failed => "CAMPAIGN_STATUS_FAILED",
375 Self::Cancelled => "CAMPAIGN_STATUS_CANCELLED",
376 }
377 }
378 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
380 match value {
381 "CAMPAIGN_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
382 "CAMPAIGN_STATUS_CREATED" => Some(Self::Created),
383 "CAMPAIGN_STATUS_RUNNING" => Some(Self::Running),
384 "CAMPAIGN_STATUS_COMPLETED" => Some(Self::Completed),
385 "CAMPAIGN_STATUS_FAILED" => Some(Self::Failed),
386 "CAMPAIGN_STATUS_CANCELLED" => Some(Self::Cancelled),
387 _ => None,
388 }
389 }
390}
391#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
393#[repr(i32)]
394pub enum DeliveryStatus {
395 Unspecified = 0,
397 Pending = 1,
399 Sent = 2,
401 Delivered = 3,
403 Acknowledged = 4,
405 Missed = 5,
407 NoDevice = 6,
409 Failed = 7,
411}
412impl DeliveryStatus {
413 pub fn as_str_name(&self) -> &'static str {
418 match self {
419 Self::Unspecified => "DELIVERY_STATUS_UNSPECIFIED",
420 Self::Pending => "DELIVERY_STATUS_PENDING",
421 Self::Sent => "DELIVERY_STATUS_SENT",
422 Self::Delivered => "DELIVERY_STATUS_DELIVERED",
423 Self::Acknowledged => "DELIVERY_STATUS_ACKNOWLEDGED",
424 Self::Missed => "DELIVERY_STATUS_MISSED",
425 Self::NoDevice => "DELIVERY_STATUS_NO_DEVICE",
426 Self::Failed => "DELIVERY_STATUS_FAILED",
427 }
428 }
429 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
431 match value {
432 "DELIVERY_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
433 "DELIVERY_STATUS_PENDING" => Some(Self::Pending),
434 "DELIVERY_STATUS_SENT" => Some(Self::Sent),
435 "DELIVERY_STATUS_DELIVERED" => Some(Self::Delivered),
436 "DELIVERY_STATUS_ACKNOWLEDGED" => Some(Self::Acknowledged),
437 "DELIVERY_STATUS_MISSED" => Some(Self::Missed),
438 "DELIVERY_STATUS_NO_DEVICE" => Some(Self::NoDevice),
439 "DELIVERY_STATUS_FAILED" => Some(Self::Failed),
440 _ => None,
441 }
442 }
443}
444#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
446#[repr(i32)]
447pub enum Platform {
448 Unspecified = 0,
450 Ios = 1,
452 Android = 2,
454}
455impl Platform {
456 pub fn as_str_name(&self) -> &'static str {
461 match self {
462 Self::Unspecified => "PLATFORM_UNSPECIFIED",
463 Self::Ios => "PLATFORM_IOS",
464 Self::Android => "PLATFORM_ANDROID",
465 }
466 }
467 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
469 match value {
470 "PLATFORM_UNSPECIFIED" => Some(Self::Unspecified),
471 "PLATFORM_IOS" => Some(Self::Ios),
472 "PLATFORM_ANDROID" => Some(Self::Android),
473 _ => None,
474 }
475 }
476}
477#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
482#[repr(i32)]
483pub enum Permission {
484 Unspecified = 0,
486 OrgRead = 1,
488 OrgWrite = 2,
490 MembersRead = 3,
492 MembersInvite = 4,
494 MembersManage = 5,
496 CampaignsRead = 6,
498 CampaignsWrite = 7,
500 CampaignsStart = 8,
502 TemplatesRead = 9,
504 TemplatesWrite = 10,
506 InboxRead = 11,
508 InboxAct = 12,
510 GroupsAllRead = 13,
512 GroupsWrite = 14,
514 GroupsAllWrite = 15,
516 TeamsAllRead = 16,
518 TeamsWrite = 17,
520 TeamsAllWrite = 18,
522 PrivacyRead = 19,
524 PrivacyWrite = 20,
526 AuditRead = 21,
528 TemplatesReview = 22,
530 PlatformSupport = 23,
533 PlatformAccessCodes = 24,
536 PlatformProvision = 25,
539}
540impl Permission {
541 pub fn as_str_name(&self) -> &'static str {
546 match self {
547 Self::Unspecified => "PERMISSION_UNSPECIFIED",
548 Self::OrgRead => "PERMISSION_ORG_READ",
549 Self::OrgWrite => "PERMISSION_ORG_WRITE",
550 Self::MembersRead => "PERMISSION_MEMBERS_READ",
551 Self::MembersInvite => "PERMISSION_MEMBERS_INVITE",
552 Self::MembersManage => "PERMISSION_MEMBERS_MANAGE",
553 Self::CampaignsRead => "PERMISSION_CAMPAIGNS_READ",
554 Self::CampaignsWrite => "PERMISSION_CAMPAIGNS_WRITE",
555 Self::CampaignsStart => "PERMISSION_CAMPAIGNS_START",
556 Self::TemplatesRead => "PERMISSION_TEMPLATES_READ",
557 Self::TemplatesWrite => "PERMISSION_TEMPLATES_WRITE",
558 Self::InboxRead => "PERMISSION_INBOX_READ",
559 Self::InboxAct => "PERMISSION_INBOX_ACT",
560 Self::GroupsAllRead => "PERMISSION_GROUPS_ALL_READ",
561 Self::GroupsWrite => "PERMISSION_GROUPS_WRITE",
562 Self::GroupsAllWrite => "PERMISSION_GROUPS_ALL_WRITE",
563 Self::TeamsAllRead => "PERMISSION_TEAMS_ALL_READ",
564 Self::TeamsWrite => "PERMISSION_TEAMS_WRITE",
565 Self::TeamsAllWrite => "PERMISSION_TEAMS_ALL_WRITE",
566 Self::PrivacyRead => "PERMISSION_PRIVACY_READ",
567 Self::PrivacyWrite => "PERMISSION_PRIVACY_WRITE",
568 Self::AuditRead => "PERMISSION_AUDIT_READ",
569 Self::TemplatesReview => "PERMISSION_TEMPLATES_REVIEW",
570 Self::PlatformSupport => "PERMISSION_PLATFORM_SUPPORT",
571 Self::PlatformAccessCodes => "PERMISSION_PLATFORM_ACCESS_CODES",
572 Self::PlatformProvision => "PERMISSION_PLATFORM_PROVISION",
573 }
574 }
575 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
577 match value {
578 "PERMISSION_UNSPECIFIED" => Some(Self::Unspecified),
579 "PERMISSION_ORG_READ" => Some(Self::OrgRead),
580 "PERMISSION_ORG_WRITE" => Some(Self::OrgWrite),
581 "PERMISSION_MEMBERS_READ" => Some(Self::MembersRead),
582 "PERMISSION_MEMBERS_INVITE" => Some(Self::MembersInvite),
583 "PERMISSION_MEMBERS_MANAGE" => Some(Self::MembersManage),
584 "PERMISSION_CAMPAIGNS_READ" => Some(Self::CampaignsRead),
585 "PERMISSION_CAMPAIGNS_WRITE" => Some(Self::CampaignsWrite),
586 "PERMISSION_CAMPAIGNS_START" => Some(Self::CampaignsStart),
587 "PERMISSION_TEMPLATES_READ" => Some(Self::TemplatesRead),
588 "PERMISSION_TEMPLATES_WRITE" => Some(Self::TemplatesWrite),
589 "PERMISSION_INBOX_READ" => Some(Self::InboxRead),
590 "PERMISSION_INBOX_ACT" => Some(Self::InboxAct),
591 "PERMISSION_GROUPS_ALL_READ" => Some(Self::GroupsAllRead),
592 "PERMISSION_GROUPS_WRITE" => Some(Self::GroupsWrite),
593 "PERMISSION_GROUPS_ALL_WRITE" => Some(Self::GroupsAllWrite),
594 "PERMISSION_TEAMS_ALL_READ" => Some(Self::TeamsAllRead),
595 "PERMISSION_TEAMS_WRITE" => Some(Self::TeamsWrite),
596 "PERMISSION_TEAMS_ALL_WRITE" => Some(Self::TeamsAllWrite),
597 "PERMISSION_PRIVACY_READ" => Some(Self::PrivacyRead),
598 "PERMISSION_PRIVACY_WRITE" => Some(Self::PrivacyWrite),
599 "PERMISSION_AUDIT_READ" => Some(Self::AuditRead),
600 "PERMISSION_TEMPLATES_REVIEW" => Some(Self::TemplatesReview),
601 "PERMISSION_PLATFORM_SUPPORT" => Some(Self::PlatformSupport),
602 "PERMISSION_PLATFORM_ACCESS_CODES" => Some(Self::PlatformAccessCodes),
603 "PERMISSION_PLATFORM_PROVISION" => Some(Self::PlatformProvision),
604 _ => None,
605 }
606 }
607}
608#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
610#[repr(i32)]
611pub enum ActionType {
612 Unspecified = 0,
614 Ack = 1,
616}
617impl ActionType {
618 pub fn as_str_name(&self) -> &'static str {
623 match self {
624 Self::Unspecified => "ACTION_TYPE_UNSPECIFIED",
625 Self::Ack => "ACTION_TYPE_ACK",
626 }
627 }
628 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
630 match value {
631 "ACTION_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
632 "ACTION_TYPE_ACK" => Some(Self::Ack),
633 _ => None,
634 }
635 }
636}
637#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
639#[repr(i32)]
640pub enum StepType {
641 Unspecified = 0,
643 SendNotification = 1,
645 DeadlineCheck = 2,
647 SendReminder = 3,
649 CallWebhook = 4,
651 MarkMissed = 5,
653 Escalate = 6,
655}
656impl StepType {
657 pub fn as_str_name(&self) -> &'static str {
662 match self {
663 Self::Unspecified => "STEP_TYPE_UNSPECIFIED",
664 Self::SendNotification => "STEP_TYPE_SEND_NOTIFICATION",
665 Self::DeadlineCheck => "STEP_TYPE_DEADLINE_CHECK",
666 Self::SendReminder => "STEP_TYPE_SEND_REMINDER",
667 Self::CallWebhook => "STEP_TYPE_CALL_WEBHOOK",
668 Self::MarkMissed => "STEP_TYPE_MARK_MISSED",
669 Self::Escalate => "STEP_TYPE_ESCALATE",
670 }
671 }
672 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
674 match value {
675 "STEP_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
676 "STEP_TYPE_SEND_NOTIFICATION" => Some(Self::SendNotification),
677 "STEP_TYPE_DEADLINE_CHECK" => Some(Self::DeadlineCheck),
678 "STEP_TYPE_SEND_REMINDER" => Some(Self::SendReminder),
679 "STEP_TYPE_CALL_WEBHOOK" => Some(Self::CallWebhook),
680 "STEP_TYPE_MARK_MISSED" => Some(Self::MarkMissed),
681 "STEP_TYPE_ESCALATE" => Some(Self::Escalate),
682 _ => None,
683 }
684 }
685}
686#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
688#[repr(i32)]
689pub enum EscalationCondition {
690 Unspecified = 0,
691 IfNotAcked = 1,
693 IfNotClosed = 2,
695}
696impl EscalationCondition {
697 pub fn as_str_name(&self) -> &'static str {
702 match self {
703 Self::Unspecified => "ESCALATION_CONDITION_UNSPECIFIED",
704 Self::IfNotAcked => "ESCALATION_CONDITION_IF_NOT_ACKED",
705 Self::IfNotClosed => "ESCALATION_CONDITION_IF_NOT_CLOSED",
706 }
707 }
708 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
710 match value {
711 "ESCALATION_CONDITION_UNSPECIFIED" => Some(Self::Unspecified),
712 "ESCALATION_CONDITION_IF_NOT_ACKED" => Some(Self::IfNotAcked),
713 "ESCALATION_CONDITION_IF_NOT_CLOSED" => Some(Self::IfNotClosed),
714 _ => None,
715 }
716 }
717}
718#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
720#[repr(i32)]
721pub enum EscalationTargetType {
722 Unspecified = 0,
723 User = 1,
725 Group = 2,
727 Manager = 3,
729 Role = 4,
731}
732impl EscalationTargetType {
733 pub fn as_str_name(&self) -> &'static str {
738 match self {
739 Self::Unspecified => "ESCALATION_TARGET_TYPE_UNSPECIFIED",
740 Self::User => "ESCALATION_TARGET_TYPE_USER",
741 Self::Group => "ESCALATION_TARGET_TYPE_GROUP",
742 Self::Manager => "ESCALATION_TARGET_TYPE_MANAGER",
743 Self::Role => "ESCALATION_TARGET_TYPE_ROLE",
744 }
745 }
746 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
748 match value {
749 "ESCALATION_TARGET_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
750 "ESCALATION_TARGET_TYPE_USER" => Some(Self::User),
751 "ESCALATION_TARGET_TYPE_GROUP" => Some(Self::Group),
752 "ESCALATION_TARGET_TYPE_MANAGER" => Some(Self::Manager),
753 "ESCALATION_TARGET_TYPE_ROLE" => Some(Self::Role),
754 _ => None,
755 }
756 }
757}
758#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
760#[repr(i32)]
761pub enum EscalateMode {
762 Unspecified = 0,
764 Deliver = 1,
766 AlertOnly = 2,
768}
769impl EscalateMode {
770 pub fn as_str_name(&self) -> &'static str {
775 match self {
776 Self::Unspecified => "ESCALATE_MODE_UNSPECIFIED",
777 Self::Deliver => "ESCALATE_MODE_DELIVER",
778 Self::AlertOnly => "ESCALATE_MODE_ALERT_ONLY",
779 }
780 }
781 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
783 match value {
784 "ESCALATE_MODE_UNSPECIFIED" => Some(Self::Unspecified),
785 "ESCALATE_MODE_DELIVER" => Some(Self::Deliver),
786 "ESCALATE_MODE_ALERT_ONLY" => Some(Self::AlertOnly),
787 _ => None,
788 }
789 }
790}
791#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
795pub struct ApiKey {
796 #[prost(string, tag="1")]
798 pub id: ::prost::alloc::string::String,
799 #[prost(string, tag="2")]
801 pub name: ::prost::alloc::string::String,
802 #[prost(string, tag="3")]
805 pub key_prefix: ::prost::alloc::string::String,
806 #[prost(enumeration="Permission", repeated, tag="4")]
808 pub permissions: ::prost::alloc::vec::Vec<i32>,
809 #[prost(message, optional, tag="5")]
811 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
812 #[prost(message, optional, tag="6")]
814 pub last_used_at: ::core::option::Option<::prost_types::Timestamp>,
815 #[prost(message, optional, tag="7")]
817 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
818 #[prost(enumeration="KeyType", tag="8")]
821 pub key_type: i32,
822}
823#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
825pub struct CreateApiKeyRequest {
826 #[prost(string, tag="1")]
828 pub name: ::prost::alloc::string::String,
829 #[prost(enumeration="Permission", repeated, tag="2")]
832 pub permissions: ::prost::alloc::vec::Vec<i32>,
833 #[prost(message, optional, tag="3")]
835 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
836 #[prost(enumeration="KeyType", tag="4")]
839 pub key_type: i32,
840}
841#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
844pub struct CreateApiKeyResponse {
845 #[prost(message, optional, tag="1")]
847 pub api_key: ::core::option::Option<ApiKey>,
848 #[prost(string, tag="2")]
851 pub key: ::prost::alloc::string::String,
852}
853#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
855pub struct ListApiKeysRequest {
856 #[prost(enumeration="KeyType", tag="1")]
858 pub key_type: i32,
859}
860#[derive(Clone, PartialEq, ::prost::Message)]
862pub struct ListApiKeysResponse {
863 #[prost(message, repeated, tag="1")]
865 pub api_keys: ::prost::alloc::vec::Vec<ApiKey>,
866}
867#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
869pub struct RevokeApiKeyRequest {
870 #[prost(string, tag="1")]
872 pub api_key_id: ::prost::alloc::string::String,
873}
874#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
876pub struct RevokeApiKeyResponse {
877}
878#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
882#[repr(i32)]
883pub enum KeyType {
884 Unspecified = 0,
885 ApiKey = 1,
886 ScimToken = 2,
887}
888impl KeyType {
889 pub fn as_str_name(&self) -> &'static str {
894 match self {
895 Self::Unspecified => "KEY_TYPE_UNSPECIFIED",
896 Self::ApiKey => "KEY_TYPE_API_KEY",
897 Self::ScimToken => "KEY_TYPE_SCIM_TOKEN",
898 }
899 }
900 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
902 match value {
903 "KEY_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
904 "KEY_TYPE_API_KEY" => Some(Self::ApiKey),
905 "KEY_TYPE_SCIM_TOKEN" => Some(Self::ScimToken),
906 _ => None,
907 }
908 }
909}
910#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
915pub struct ExportUserDataRequest {
916 #[prost(string, tag="1")]
919 pub user_id: ::prost::alloc::string::String,
920}
921#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
923pub struct ExportUserDataResponse {
924 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
926 pub status: i32,
927 #[prost(string, tag="2")]
930 pub result_url: ::prost::alloc::string::String,
931 #[prost(string, tag="3")]
934 pub export_id: ::prost::alloc::string::String,
935}
936#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
939pub struct DeleteUserDataRequest {
940 #[prost(string, tag="1")]
943 pub user_id: ::prost::alloc::string::String,
944 #[prost(bool, tag="2")]
947 pub anonymize: bool,
948}
949#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
951pub struct DeleteUserDataResponse {
952 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
954 pub status: i32,
955 #[prost(message, optional, tag="2")]
958 pub deleted_at: ::core::option::Option<::prost_types::Timestamp>,
959 #[prost(string, tag="3")]
961 pub request_id: ::prost::alloc::string::String,
962}
963#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
966pub struct ListPrivacyRequestsRequest {
967 #[prost(int32, tag="1")]
970 pub page_size: i32,
971 #[prost(string, tag="2")]
973 pub page_token: ::prost::alloc::string::String,
974 #[prost(string, tag="3")]
976 pub request_type: ::prost::alloc::string::String,
977 #[prost(enumeration="PrivacyRequestStatus", tag="4")]
979 pub status: i32,
980}
981#[derive(Clone, PartialEq, ::prost::Message)]
983pub struct ListPrivacyRequestsResponse {
984 #[prost(message, repeated, tag="1")]
986 pub requests: ::prost::alloc::vec::Vec<PrivacyRequest>,
987 #[prost(string, tag="2")]
989 pub next_page_token: ::prost::alloc::string::String,
990}
991#[derive(Clone, PartialEq, ::prost::Message)]
993pub struct PrivacyRequest {
994 #[prost(string, tag="1")]
996 pub id: ::prost::alloc::string::String,
997 #[prost(string, tag="2")]
999 pub user_id: ::prost::alloc::string::String,
1000 #[prost(string, tag="3")]
1002 pub user_email: ::prost::alloc::string::String,
1003 #[prost(string, tag="4")]
1005 pub request_type: ::prost::alloc::string::String,
1006 #[prost(enumeration="PrivacyRequestStatus", tag="5")]
1008 pub status: i32,
1009 #[prost(bool, tag="6")]
1011 pub anonymize: bool,
1012 #[prost(string, tag="7")]
1014 pub requested_by_email: ::prost::alloc::string::String,
1015 #[prost(message, optional, tag="8")]
1017 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1018 #[prost(message, optional, tag="9")]
1020 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
1021 #[prost(map="string, string", tag="10")]
1023 pub metadata: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1024}
1025#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1028pub struct CancelDeletionRequest {
1029 #[prost(string, tag="1")]
1031 pub request_id: ::prost::alloc::string::String,
1032 #[prost(string, tag="2")]
1034 pub confirmation_email: ::prost::alloc::string::String,
1035}
1036#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1038pub struct CancelDeletionResponse {
1039 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1041 pub status: i32,
1042}
1043#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1046pub struct ImmediateDeleteRequest {
1047 #[prost(string, tag="1")]
1049 pub request_id: ::prost::alloc::string::String,
1050 #[prost(string, tag="2")]
1052 pub confirmation_email: ::prost::alloc::string::String,
1053}
1054#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1056pub struct ImmediateDeleteResponse {
1057 #[prost(enumeration="PrivacyRequestStatus", tag="1")]
1059 pub status: i32,
1060}
1061#[derive(Clone, PartialEq, ::prost::Message)]
1064pub struct RectifyUserDataRequest {
1065 #[prost(string, tag="1")]
1068 pub user_id: ::prost::alloc::string::String,
1069 #[prost(map="string, string", tag="2")]
1073 pub corrections: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1074}
1075#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1077pub struct RectifyUserDataResponse {
1078 #[prost(string, repeated, tag="1")]
1080 pub rectified_fields: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1081}
1082#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1085pub struct RestrictProcessingRequest {
1086 #[prost(string, tag="1")]
1089 pub user_id: ::prost::alloc::string::String,
1090 #[prost(bool, tag="2")]
1092 pub restricted: bool,
1093}
1094#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1096pub struct RestrictProcessingResponse {
1097 #[prost(bool, tag="1")]
1099 pub restricted: bool,
1100 #[prost(message, optional, tag="2")]
1102 pub restricted_at: ::core::option::Option<::prost_types::Timestamp>,
1103}
1104#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1108pub struct GetDataExistenceConfirmationRequest {
1109 #[prost(string, tag="1")]
1112 pub user_id: ::prost::alloc::string::String,
1113}
1114#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1116pub struct GetDataExistenceConfirmationResponse {
1117 #[prost(bool, tag="1")]
1119 pub exists: bool,
1120 #[prost(string, repeated, tag="2")]
1122 pub data_categories: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1123}
1124#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1127pub struct ListMyPrivacyRequestsRequest {
1128 #[prost(int32, tag="1")]
1131 pub page_size: i32,
1132 #[prost(string, tag="2")]
1134 pub page_token: ::prost::alloc::string::String,
1135 #[prost(string, tag="3")]
1137 pub request_type: ::prost::alloc::string::String,
1138 #[prost(enumeration="PrivacyRequestStatus", tag="4")]
1140 pub status: i32,
1141}
1142#[derive(Clone, PartialEq, ::prost::Message)]
1144pub struct ListMyPrivacyRequestsResponse {
1145 #[prost(message, repeated, tag="1")]
1147 pub requests: ::prost::alloc::vec::Vec<PrivacyRequest>,
1148 #[prost(string, tag="2")]
1150 pub next_page_token: ::prost::alloc::string::String,
1151}
1152#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1156#[repr(i32)]
1157pub enum PrivacyRequestStatus {
1158 Unspecified = 0,
1160 Pending = 1,
1162 Processing = 2,
1164 Completed = 3,
1166 Failed = 4,
1168}
1169impl PrivacyRequestStatus {
1170 pub fn as_str_name(&self) -> &'static str {
1175 match self {
1176 Self::Unspecified => "PRIVACY_REQUEST_STATUS_UNSPECIFIED",
1177 Self::Pending => "PRIVACY_REQUEST_STATUS_PENDING",
1178 Self::Processing => "PRIVACY_REQUEST_STATUS_PROCESSING",
1179 Self::Completed => "PRIVACY_REQUEST_STATUS_COMPLETED",
1180 Self::Failed => "PRIVACY_REQUEST_STATUS_FAILED",
1181 }
1182 }
1183 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1185 match value {
1186 "PRIVACY_REQUEST_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
1187 "PRIVACY_REQUEST_STATUS_PENDING" => Some(Self::Pending),
1188 "PRIVACY_REQUEST_STATUS_PROCESSING" => Some(Self::Processing),
1189 "PRIVACY_REQUEST_STATUS_COMPLETED" => Some(Self::Completed),
1190 "PRIVACY_REQUEST_STATUS_FAILED" => Some(Self::Failed),
1191 _ => None,
1192 }
1193 }
1194}
1195#[derive(Clone, PartialEq, ::prost::Message)]
1200pub struct AuditEvent {
1201 #[prost(string, tag="1")]
1204 pub id: ::prost::alloc::string::String,
1205 #[prost(string, tag="2")]
1208 pub org_id: ::prost::alloc::string::String,
1209 #[prost(string, tag="3")]
1212 pub actor_id: ::prost::alloc::string::String,
1213 #[prost(enumeration="AuditEventType", tag="4")]
1215 pub event_type: i32,
1216 #[prost(string, tag="5")]
1219 pub entity_type: ::prost::alloc::string::String,
1220 #[prost(string, tag="6")]
1223 pub entity_id: ::prost::alloc::string::String,
1224 #[prost(map="string, string", tag="7")]
1227 pub metadata: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1228 #[prost(message, optional, tag="10")]
1230 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1231}
1232#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1235pub struct ListAuditEventsRequest {
1236 #[prost(string, tag="1")]
1238 pub page_token: ::prost::alloc::string::String,
1239 #[prost(int32, tag="2")]
1242 pub page_size: i32,
1243 #[prost(enumeration="AuditEventType", tag="3")]
1245 pub event_type: i32,
1246 #[prost(string, tag="4")]
1249 pub actor_id: ::prost::alloc::string::String,
1250 #[prost(message, optional, tag="5")]
1252 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
1253 #[prost(message, optional, tag="6")]
1255 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
1256}
1257#[derive(Clone, PartialEq, ::prost::Message)]
1259pub struct ListAuditEventsResponse {
1260 #[prost(message, repeated, tag="1")]
1262 pub events: ::prost::alloc::vec::Vec<AuditEvent>,
1263 #[prost(string, tag="2")]
1265 pub next_page_token: ::prost::alloc::string::String,
1266}
1267#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1270pub struct ExportAuditTrailRequest {
1271 #[prost(enumeration="AuditExportFormat", tag="1")]
1273 pub format: i32,
1274 #[prost(message, optional, tag="2")]
1276 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
1277 #[prost(message, optional, tag="3")]
1279 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
1280}
1281#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1283pub struct ExportAuditTrailResponse {
1284 #[prost(string, tag="1")]
1287 pub export_url: ::prost::alloc::string::String,
1288 #[prost(enumeration="PrivacyRequestStatus", tag="2")]
1290 pub status: i32,
1291}
1292#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1294pub struct AuditExport {
1295 #[prost(string, tag="1")]
1297 pub id: ::prost::alloc::string::String,
1298 #[prost(string, tag="2")]
1300 pub format: ::prost::alloc::string::String,
1301 #[prost(enumeration="PrivacyRequestStatus", tag="3")]
1303 pub status: i32,
1304 #[prost(string, tag="4")]
1306 pub result_url: ::prost::alloc::string::String,
1307 #[prost(string, tag="5")]
1309 pub error_message: ::prost::alloc::string::String,
1310 #[prost(string, tag="6")]
1312 pub requested_by_email: ::prost::alloc::string::String,
1313 #[prost(message, optional, tag="7")]
1315 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1316 #[prost(message, optional, tag="8")]
1318 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
1319}
1320#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1323pub struct ListAuditExportsRequest {
1324}
1325#[derive(Clone, PartialEq, ::prost::Message)]
1327pub struct ListAuditExportsResponse {
1328 #[prost(message, repeated, tag="1")]
1330 pub exports: ::prost::alloc::vec::Vec<AuditExport>,
1331}
1332#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1336#[repr(i32)]
1337pub enum AuditEventType {
1338 Unspecified = 0,
1340 CampaignCreated = 1,
1343 MessageSent = 2,
1345 MessageOpened = 3,
1347 AckRegistered = 4,
1349 EscalationExecuted = 5,
1351 CampaignStarted = 12,
1353 CampaignCancelled = 13,
1355 CampaignUpdated = 14,
1357 UserInvited = 6,
1360 UserDeactivated = 7,
1362 UserReactivated = 15,
1364 RoleChanged = 10,
1366 InviteRevoked = 16,
1368 ProfileUpdated = 17,
1370 SettingsUpdated = 18,
1372 PasskeyEnrolled = 19,
1374 DataExportRequested = 8,
1377 DataDeletionRequested = 9,
1379 DataRectified = 20,
1381 ProcessingRestricted = 21,
1383 DeletionCancelled = 22,
1385 DeletionImmediate = 23,
1387 SsoConfigured = 11,
1390 SsoProviderCreated = 24,
1392 SsoProviderDeleted = 25,
1394 OrgUpdated = 26,
1396 RoleCreated = 27,
1399 RoleUpdated = 28,
1401 RoleDeleted = 29,
1403 TemplateCreated = 30,
1406 TemplateUpdated = 31,
1408 ApiKeyCreated = 32,
1411 ApiKeyRevoked = 33,
1413 InviteLinkCreated = 34,
1416 InviteLinkRevoked = 35,
1418 GroupCreated = 36,
1421 GroupUpdated = 37,
1423 GroupDeleted = 38,
1425 GroupMembersAdded = 39,
1427 GroupMembersRemoved = 40,
1429 TeamCreated = 41,
1432 TeamUpdated = 42,
1434 TeamDeleted = 43,
1436 TeamMembersAdded = 44,
1438 TeamMembersRemoved = 45,
1440 ScimUserProvisioned = 46,
1443 ScimUserDeprovisioned = 47,
1445 ScimUserUpdated = 48,
1447 TranslationCreated = 49,
1450 TranslationApproved = 50,
1452 SandboxCreated = 51,
1455 SandboxExpired = 52,
1457 AiPredictionLogged = 53,
1460 MlPipelineTriggered = 54,
1462 ArchetypeClusteringTriggered = 55,
1464 OrgCreated = 56,
1467 OrgDeleted = 57,
1469}
1470impl AuditEventType {
1471 pub fn as_str_name(&self) -> &'static str {
1476 match self {
1477 Self::Unspecified => "AUDIT_EVENT_TYPE_UNSPECIFIED",
1478 Self::CampaignCreated => "AUDIT_EVENT_TYPE_CAMPAIGN_CREATED",
1479 Self::MessageSent => "AUDIT_EVENT_TYPE_MESSAGE_SENT",
1480 Self::MessageOpened => "AUDIT_EVENT_TYPE_MESSAGE_OPENED",
1481 Self::AckRegistered => "AUDIT_EVENT_TYPE_ACK_REGISTERED",
1482 Self::EscalationExecuted => "AUDIT_EVENT_TYPE_ESCALATION_EXECUTED",
1483 Self::CampaignStarted => "AUDIT_EVENT_TYPE_CAMPAIGN_STARTED",
1484 Self::CampaignCancelled => "AUDIT_EVENT_TYPE_CAMPAIGN_CANCELLED",
1485 Self::CampaignUpdated => "AUDIT_EVENT_TYPE_CAMPAIGN_UPDATED",
1486 Self::UserInvited => "AUDIT_EVENT_TYPE_USER_INVITED",
1487 Self::UserDeactivated => "AUDIT_EVENT_TYPE_USER_DEACTIVATED",
1488 Self::UserReactivated => "AUDIT_EVENT_TYPE_USER_REACTIVATED",
1489 Self::RoleChanged => "AUDIT_EVENT_TYPE_ROLE_CHANGED",
1490 Self::InviteRevoked => "AUDIT_EVENT_TYPE_INVITE_REVOKED",
1491 Self::ProfileUpdated => "AUDIT_EVENT_TYPE_PROFILE_UPDATED",
1492 Self::SettingsUpdated => "AUDIT_EVENT_TYPE_SETTINGS_UPDATED",
1493 Self::PasskeyEnrolled => "AUDIT_EVENT_TYPE_PASSKEY_ENROLLED",
1494 Self::DataExportRequested => "AUDIT_EVENT_TYPE_DATA_EXPORT_REQUESTED",
1495 Self::DataDeletionRequested => "AUDIT_EVENT_TYPE_DATA_DELETION_REQUESTED",
1496 Self::DataRectified => "AUDIT_EVENT_TYPE_DATA_RECTIFIED",
1497 Self::ProcessingRestricted => "AUDIT_EVENT_TYPE_PROCESSING_RESTRICTED",
1498 Self::DeletionCancelled => "AUDIT_EVENT_TYPE_DELETION_CANCELLED",
1499 Self::DeletionImmediate => "AUDIT_EVENT_TYPE_DELETION_IMMEDIATE",
1500 Self::SsoConfigured => "AUDIT_EVENT_TYPE_SSO_CONFIGURED",
1501 Self::SsoProviderCreated => "AUDIT_EVENT_TYPE_SSO_PROVIDER_CREATED",
1502 Self::SsoProviderDeleted => "AUDIT_EVENT_TYPE_SSO_PROVIDER_DELETED",
1503 Self::OrgUpdated => "AUDIT_EVENT_TYPE_ORG_UPDATED",
1504 Self::RoleCreated => "AUDIT_EVENT_TYPE_ROLE_CREATED",
1505 Self::RoleUpdated => "AUDIT_EVENT_TYPE_ROLE_UPDATED",
1506 Self::RoleDeleted => "AUDIT_EVENT_TYPE_ROLE_DELETED",
1507 Self::TemplateCreated => "AUDIT_EVENT_TYPE_TEMPLATE_CREATED",
1508 Self::TemplateUpdated => "AUDIT_EVENT_TYPE_TEMPLATE_UPDATED",
1509 Self::ApiKeyCreated => "AUDIT_EVENT_TYPE_API_KEY_CREATED",
1510 Self::ApiKeyRevoked => "AUDIT_EVENT_TYPE_API_KEY_REVOKED",
1511 Self::InviteLinkCreated => "AUDIT_EVENT_TYPE_INVITE_LINK_CREATED",
1512 Self::InviteLinkRevoked => "AUDIT_EVENT_TYPE_INVITE_LINK_REVOKED",
1513 Self::GroupCreated => "AUDIT_EVENT_TYPE_GROUP_CREATED",
1514 Self::GroupUpdated => "AUDIT_EVENT_TYPE_GROUP_UPDATED",
1515 Self::GroupDeleted => "AUDIT_EVENT_TYPE_GROUP_DELETED",
1516 Self::GroupMembersAdded => "AUDIT_EVENT_TYPE_GROUP_MEMBERS_ADDED",
1517 Self::GroupMembersRemoved => "AUDIT_EVENT_TYPE_GROUP_MEMBERS_REMOVED",
1518 Self::TeamCreated => "AUDIT_EVENT_TYPE_TEAM_CREATED",
1519 Self::TeamUpdated => "AUDIT_EVENT_TYPE_TEAM_UPDATED",
1520 Self::TeamDeleted => "AUDIT_EVENT_TYPE_TEAM_DELETED",
1521 Self::TeamMembersAdded => "AUDIT_EVENT_TYPE_TEAM_MEMBERS_ADDED",
1522 Self::TeamMembersRemoved => "AUDIT_EVENT_TYPE_TEAM_MEMBERS_REMOVED",
1523 Self::ScimUserProvisioned => "AUDIT_EVENT_TYPE_SCIM_USER_PROVISIONED",
1524 Self::ScimUserDeprovisioned => "AUDIT_EVENT_TYPE_SCIM_USER_DEPROVISIONED",
1525 Self::ScimUserUpdated => "AUDIT_EVENT_TYPE_SCIM_USER_UPDATED",
1526 Self::TranslationCreated => "AUDIT_EVENT_TYPE_TRANSLATION_CREATED",
1527 Self::TranslationApproved => "AUDIT_EVENT_TYPE_TRANSLATION_APPROVED",
1528 Self::SandboxCreated => "AUDIT_EVENT_TYPE_SANDBOX_CREATED",
1529 Self::SandboxExpired => "AUDIT_EVENT_TYPE_SANDBOX_EXPIRED",
1530 Self::AiPredictionLogged => "AUDIT_EVENT_TYPE_AI_PREDICTION_LOGGED",
1531 Self::MlPipelineTriggered => "AUDIT_EVENT_TYPE_ML_PIPELINE_TRIGGERED",
1532 Self::ArchetypeClusteringTriggered => "AUDIT_EVENT_TYPE_ARCHETYPE_CLUSTERING_TRIGGERED",
1533 Self::OrgCreated => "AUDIT_EVENT_TYPE_ORG_CREATED",
1534 Self::OrgDeleted => "AUDIT_EVENT_TYPE_ORG_DELETED",
1535 }
1536 }
1537 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1539 match value {
1540 "AUDIT_EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
1541 "AUDIT_EVENT_TYPE_CAMPAIGN_CREATED" => Some(Self::CampaignCreated),
1542 "AUDIT_EVENT_TYPE_MESSAGE_SENT" => Some(Self::MessageSent),
1543 "AUDIT_EVENT_TYPE_MESSAGE_OPENED" => Some(Self::MessageOpened),
1544 "AUDIT_EVENT_TYPE_ACK_REGISTERED" => Some(Self::AckRegistered),
1545 "AUDIT_EVENT_TYPE_ESCALATION_EXECUTED" => Some(Self::EscalationExecuted),
1546 "AUDIT_EVENT_TYPE_CAMPAIGN_STARTED" => Some(Self::CampaignStarted),
1547 "AUDIT_EVENT_TYPE_CAMPAIGN_CANCELLED" => Some(Self::CampaignCancelled),
1548 "AUDIT_EVENT_TYPE_CAMPAIGN_UPDATED" => Some(Self::CampaignUpdated),
1549 "AUDIT_EVENT_TYPE_USER_INVITED" => Some(Self::UserInvited),
1550 "AUDIT_EVENT_TYPE_USER_DEACTIVATED" => Some(Self::UserDeactivated),
1551 "AUDIT_EVENT_TYPE_USER_REACTIVATED" => Some(Self::UserReactivated),
1552 "AUDIT_EVENT_TYPE_ROLE_CHANGED" => Some(Self::RoleChanged),
1553 "AUDIT_EVENT_TYPE_INVITE_REVOKED" => Some(Self::InviteRevoked),
1554 "AUDIT_EVENT_TYPE_PROFILE_UPDATED" => Some(Self::ProfileUpdated),
1555 "AUDIT_EVENT_TYPE_SETTINGS_UPDATED" => Some(Self::SettingsUpdated),
1556 "AUDIT_EVENT_TYPE_PASSKEY_ENROLLED" => Some(Self::PasskeyEnrolled),
1557 "AUDIT_EVENT_TYPE_DATA_EXPORT_REQUESTED" => Some(Self::DataExportRequested),
1558 "AUDIT_EVENT_TYPE_DATA_DELETION_REQUESTED" => Some(Self::DataDeletionRequested),
1559 "AUDIT_EVENT_TYPE_DATA_RECTIFIED" => Some(Self::DataRectified),
1560 "AUDIT_EVENT_TYPE_PROCESSING_RESTRICTED" => Some(Self::ProcessingRestricted),
1561 "AUDIT_EVENT_TYPE_DELETION_CANCELLED" => Some(Self::DeletionCancelled),
1562 "AUDIT_EVENT_TYPE_DELETION_IMMEDIATE" => Some(Self::DeletionImmediate),
1563 "AUDIT_EVENT_TYPE_SSO_CONFIGURED" => Some(Self::SsoConfigured),
1564 "AUDIT_EVENT_TYPE_SSO_PROVIDER_CREATED" => Some(Self::SsoProviderCreated),
1565 "AUDIT_EVENT_TYPE_SSO_PROVIDER_DELETED" => Some(Self::SsoProviderDeleted),
1566 "AUDIT_EVENT_TYPE_ORG_UPDATED" => Some(Self::OrgUpdated),
1567 "AUDIT_EVENT_TYPE_ROLE_CREATED" => Some(Self::RoleCreated),
1568 "AUDIT_EVENT_TYPE_ROLE_UPDATED" => Some(Self::RoleUpdated),
1569 "AUDIT_EVENT_TYPE_ROLE_DELETED" => Some(Self::RoleDeleted),
1570 "AUDIT_EVENT_TYPE_TEMPLATE_CREATED" => Some(Self::TemplateCreated),
1571 "AUDIT_EVENT_TYPE_TEMPLATE_UPDATED" => Some(Self::TemplateUpdated),
1572 "AUDIT_EVENT_TYPE_API_KEY_CREATED" => Some(Self::ApiKeyCreated),
1573 "AUDIT_EVENT_TYPE_API_KEY_REVOKED" => Some(Self::ApiKeyRevoked),
1574 "AUDIT_EVENT_TYPE_INVITE_LINK_CREATED" => Some(Self::InviteLinkCreated),
1575 "AUDIT_EVENT_TYPE_INVITE_LINK_REVOKED" => Some(Self::InviteLinkRevoked),
1576 "AUDIT_EVENT_TYPE_GROUP_CREATED" => Some(Self::GroupCreated),
1577 "AUDIT_EVENT_TYPE_GROUP_UPDATED" => Some(Self::GroupUpdated),
1578 "AUDIT_EVENT_TYPE_GROUP_DELETED" => Some(Self::GroupDeleted),
1579 "AUDIT_EVENT_TYPE_GROUP_MEMBERS_ADDED" => Some(Self::GroupMembersAdded),
1580 "AUDIT_EVENT_TYPE_GROUP_MEMBERS_REMOVED" => Some(Self::GroupMembersRemoved),
1581 "AUDIT_EVENT_TYPE_TEAM_CREATED" => Some(Self::TeamCreated),
1582 "AUDIT_EVENT_TYPE_TEAM_UPDATED" => Some(Self::TeamUpdated),
1583 "AUDIT_EVENT_TYPE_TEAM_DELETED" => Some(Self::TeamDeleted),
1584 "AUDIT_EVENT_TYPE_TEAM_MEMBERS_ADDED" => Some(Self::TeamMembersAdded),
1585 "AUDIT_EVENT_TYPE_TEAM_MEMBERS_REMOVED" => Some(Self::TeamMembersRemoved),
1586 "AUDIT_EVENT_TYPE_SCIM_USER_PROVISIONED" => Some(Self::ScimUserProvisioned),
1587 "AUDIT_EVENT_TYPE_SCIM_USER_DEPROVISIONED" => Some(Self::ScimUserDeprovisioned),
1588 "AUDIT_EVENT_TYPE_SCIM_USER_UPDATED" => Some(Self::ScimUserUpdated),
1589 "AUDIT_EVENT_TYPE_TRANSLATION_CREATED" => Some(Self::TranslationCreated),
1590 "AUDIT_EVENT_TYPE_TRANSLATION_APPROVED" => Some(Self::TranslationApproved),
1591 "AUDIT_EVENT_TYPE_SANDBOX_CREATED" => Some(Self::SandboxCreated),
1592 "AUDIT_EVENT_TYPE_SANDBOX_EXPIRED" => Some(Self::SandboxExpired),
1593 "AUDIT_EVENT_TYPE_AI_PREDICTION_LOGGED" => Some(Self::AiPredictionLogged),
1594 "AUDIT_EVENT_TYPE_ML_PIPELINE_TRIGGERED" => Some(Self::MlPipelineTriggered),
1595 "AUDIT_EVENT_TYPE_ARCHETYPE_CLUSTERING_TRIGGERED" => Some(Self::ArchetypeClusteringTriggered),
1596 "AUDIT_EVENT_TYPE_ORG_CREATED" => Some(Self::OrgCreated),
1597 "AUDIT_EVENT_TYPE_ORG_DELETED" => Some(Self::OrgDeleted),
1598 _ => None,
1599 }
1600 }
1601}
1602#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1604#[repr(i32)]
1605pub enum AuditExportFormat {
1606 Unspecified = 0,
1608 Csv = 1,
1610 Json = 2,
1612 Parquet = 3,
1614}
1615impl AuditExportFormat {
1616 pub fn as_str_name(&self) -> &'static str {
1621 match self {
1622 Self::Unspecified => "AUDIT_EXPORT_FORMAT_UNSPECIFIED",
1623 Self::Csv => "AUDIT_EXPORT_FORMAT_CSV",
1624 Self::Json => "AUDIT_EXPORT_FORMAT_JSON",
1625 Self::Parquet => "AUDIT_EXPORT_FORMAT_PARQUET",
1626 }
1627 }
1628 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1630 match value {
1631 "AUDIT_EXPORT_FORMAT_UNSPECIFIED" => Some(Self::Unspecified),
1632 "AUDIT_EXPORT_FORMAT_CSV" => Some(Self::Csv),
1633 "AUDIT_EXPORT_FORMAT_JSON" => Some(Self::Json),
1634 "AUDIT_EXPORT_FORMAT_PARQUET" => Some(Self::Parquet),
1635 _ => None,
1636 }
1637 }
1638}
1639#[derive(Clone, PartialEq, ::prost::Message)]
1644pub struct Campaign {
1645 #[prost(string, tag="1")]
1648 pub id: ::prost::alloc::string::String,
1649 #[prost(string, tag="2")]
1652 pub name: ::prost::alloc::string::String,
1653 #[prost(string, tag="3")]
1656 pub template_id: ::prost::alloc::string::String,
1657 #[prost(int32, tag="4")]
1659 pub template_version: i32,
1660 #[prost(string, tag="5")]
1662 pub audience_snapshot_ref: ::prost::alloc::string::String,
1663 #[prost(enumeration="CampaignStatus", tag="6")]
1665 pub status: i32,
1666 #[prost(message, optional, tag="7")]
1668 pub workflow: ::core::option::Option<WorkflowDefinition>,
1669 #[prost(int32, tag="8")]
1671 pub total_recipients: i32,
1672 #[prost(int32, tag="9")]
1674 pub action_completed_count: i32,
1675 #[prost(int32, tag="10")]
1677 pub missed_count: i32,
1678 #[prost(message, optional, tag="11")]
1680 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
1681 #[prost(message, optional, tag="12")]
1683 pub started_at: ::core::option::Option<::prost_types::Timestamp>,
1684 #[prost(message, optional, tag="13")]
1686 pub completed_at: ::core::option::Option<::prost_types::Timestamp>,
1687 #[prost(string, tag="14")]
1690 pub sender_name: ::prost::alloc::string::String,
1691 #[prost(string, tag="15")]
1694 pub title: ::prost::alloc::string::String,
1695 #[prost(bool, tag="16")]
1697 pub critical: bool,
1698 #[prost(string, tag="17")]
1703 pub default_locale: ::prost::alloc::string::String,
1704 #[prost(bool, tag="18")]
1708 pub wait_for_enrollment: bool,
1709 #[prost(message, optional, tag="19")]
1712 pub originating_archetype: ::core::option::Option<CampaignOriginatingArchetype>,
1713}
1714#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1719pub struct CampaignOriginatingArchetype {
1720 #[prost(string, tag="1")]
1722 pub group_id: ::prost::alloc::string::String,
1723 #[prost(string, tag="2")]
1726 pub archetype_label: ::prost::alloc::string::String,
1727}
1728#[derive(Clone, PartialEq, ::prost::Message)]
1730pub struct AudienceMember {
1731 #[prost(string, tag="1")]
1733 pub user_id: ::prost::alloc::string::String,
1734 #[prost(map="string, string", tag="2")]
1736 pub variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
1737}
1738#[derive(Clone, PartialEq, ::prost::Message)]
1740pub struct CreateCampaignRequest {
1741 #[prost(string, tag="1")]
1744 pub name: ::prost::alloc::string::String,
1745 #[prost(string, tag="2")]
1748 pub template_id: ::prost::alloc::string::String,
1749 #[prost(int32, tag="3")]
1751 pub template_version: i32,
1752 #[prost(string, repeated, tag="4")]
1755 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
1756 #[prost(message, optional, tag="5")]
1758 pub workflow: ::core::option::Option<WorkflowDefinition>,
1759 #[prost(string, tag="6")]
1762 pub sender_name: ::prost::alloc::string::String,
1763 #[prost(string, tag="7")]
1766 pub title: ::prost::alloc::string::String,
1767 #[prost(message, repeated, tag="8")]
1771 pub audience: ::prost::alloc::vec::Vec<AudienceMember>,
1772 #[prost(bool, tag="9")]
1775 pub include_restricted: bool,
1776 #[prost(bool, tag="10")]
1778 pub critical: bool,
1779 #[prost(string, tag="11")]
1781 pub default_locale: ::prost::alloc::string::String,
1782 #[prost(bool, tag="12")]
1786 pub wait_for_enrollment: bool,
1787 #[prost(message, optional, tag="13")]
1792 pub originating_archetype: ::core::option::Option<CampaignOriginatingArchetype>,
1793}
1794#[derive(Clone, PartialEq, ::prost::Message)]
1796pub struct CreateCampaignResponse {
1797 #[prost(message, optional, tag="1")]
1799 pub campaign: ::core::option::Option<Campaign>,
1800}
1801#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1803pub struct StartCampaignRequest {
1804 #[prost(string, tag="1")]
1807 pub campaign_id: ::prost::alloc::string::String,
1808}
1809#[derive(Clone, PartialEq, ::prost::Message)]
1811pub struct StartCampaignResponse {
1812 #[prost(message, optional, tag="1")]
1814 pub campaign: ::core::option::Option<Campaign>,
1815}
1816#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1818pub struct GetCampaignRequest {
1819 #[prost(string, tag="1")]
1822 pub campaign_id: ::prost::alloc::string::String,
1823}
1824#[derive(Clone, PartialEq, ::prost::Message)]
1826pub struct GetCampaignResponse {
1827 #[prost(message, optional, tag="1")]
1829 pub campaign: ::core::option::Option<Campaign>,
1830}
1831#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1833pub struct ListCampaignsRequest {
1834 #[prost(message, optional, tag="1")]
1836 pub pagination: ::core::option::Option<Pagination>,
1837}
1838#[derive(Clone, PartialEq, ::prost::Message)]
1840pub struct ListCampaignsResponse {
1841 #[prost(message, repeated, tag="1")]
1843 pub campaigns: ::prost::alloc::vec::Vec<Campaign>,
1844 #[prost(message, optional, tag="2")]
1846 pub pagination_meta: ::core::option::Option<PaginationMeta>,
1847}
1848#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1850pub struct CancelCampaignRequest {
1851 #[prost(string, tag="1")]
1854 pub campaign_id: ::prost::alloc::string::String,
1855}
1856#[derive(Clone, PartialEq, ::prost::Message)]
1858pub struct CancelCampaignResponse {
1859 #[prost(message, optional, tag="1")]
1861 pub campaign: ::core::option::Option<Campaign>,
1862}
1863#[derive(Clone, PartialEq, ::prost::Message)]
1866pub struct UpdateCampaignRequest {
1867 #[prost(string, tag="1")]
1870 pub campaign_id: ::prost::alloc::string::String,
1871 #[prost(string, tag="2")]
1874 pub name: ::prost::alloc::string::String,
1875 #[prost(string, tag="3")]
1878 pub sender_name: ::prost::alloc::string::String,
1879 #[prost(string, tag="4")]
1882 pub title: ::prost::alloc::string::String,
1883 #[prost(string, tag="5")]
1886 pub template_id: ::prost::alloc::string::String,
1887 #[prost(int32, tag="6")]
1889 pub template_version: i32,
1890 #[prost(message, optional, tag="7")]
1892 pub workflow: ::core::option::Option<WorkflowDefinition>,
1893}
1894#[derive(Clone, PartialEq, ::prost::Message)]
1896pub struct UpdateCampaignResponse {
1897 #[prost(message, optional, tag="1")]
1899 pub campaign: ::core::option::Option<Campaign>,
1900}
1901#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1903pub struct Delivery {
1904 #[prost(string, tag="1")]
1907 pub id: ::prost::alloc::string::String,
1908 #[prost(string, tag="2")]
1911 pub user_id: ::prost::alloc::string::String,
1912 #[prost(string, tag="3")]
1915 pub campaign_id: ::prost::alloc::string::String,
1916 #[prost(enumeration="DeliveryStatus", tag="4")]
1918 pub status: i32,
1919 #[prost(message, optional, tag="5")]
1921 pub delivered_at: ::core::option::Option<::prost_types::Timestamp>,
1922 #[prost(message, optional, tag="6")]
1924 pub read_at: ::core::option::Option<::prost_types::Timestamp>,
1925 #[prost(message, optional, tag="7")]
1927 pub acted_at: ::core::option::Option<::prost_types::Timestamp>,
1928 #[prost(string, tag="8")]
1930 pub recipient_email: ::prost::alloc::string::String,
1931 #[prost(enumeration="delivery::Kind", tag="12")]
1934 pub kind: i32,
1935 #[prost(string, tag="13")]
1939 pub parent_delivery_id: ::prost::alloc::string::String,
1940 #[prost(string, tag="14")]
1944 pub rendered_locale: ::prost::alloc::string::String,
1945}
1946pub mod delivery {
1948 #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1950 #[repr(i32)]
1951 pub enum Kind {
1952 Unspecified = 0,
1954 Primary = 1,
1956 Escalation = 2,
1958 }
1959 impl Kind {
1960 pub fn as_str_name(&self) -> &'static str {
1965 match self {
1966 Self::Unspecified => "KIND_UNSPECIFIED",
1967 Self::Primary => "KIND_PRIMARY",
1968 Self::Escalation => "KIND_ESCALATION",
1969 }
1970 }
1971 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1973 match value {
1974 "KIND_UNSPECIFIED" => Some(Self::Unspecified),
1975 "KIND_PRIMARY" => Some(Self::Primary),
1976 "KIND_ESCALATION" => Some(Self::Escalation),
1977 _ => None,
1978 }
1979 }
1980 }
1981}
1982#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1984pub struct ListDeliveriesRequest {
1985 #[prost(string, tag="1")]
1988 pub campaign_id: ::prost::alloc::string::String,
1989 #[prost(enumeration="DeliveryStatus", tag="2")]
1991 pub status_filter: i32,
1992 #[prost(message, optional, tag="3")]
1994 pub pagination: ::core::option::Option<Pagination>,
1995}
1996#[derive(Clone, PartialEq, ::prost::Message)]
1998pub struct ListDeliveriesResponse {
1999 #[prost(message, repeated, tag="1")]
2001 pub deliveries: ::prost::alloc::vec::Vec<Delivery>,
2002 #[prost(message, optional, tag="2")]
2004 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2005}
2006#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2011pub struct GetCampaignArchetypeBreakdownRequest {
2012 #[prost(string, tag="1")]
2015 pub campaign_id: ::prost::alloc::string::String,
2016}
2017#[derive(Clone, PartialEq, ::prost::Message)]
2022pub struct ArchetypeShareShift {
2023 #[prost(string, tag="1")]
2025 pub label: ::prost::alloc::string::String,
2026 #[prost(double, tag="2")]
2029 pub share_before: f64,
2030 #[prost(double, tag="3")]
2033 pub share_after: f64,
2034 #[prost(bool, tag="4")]
2037 pub is_origin: bool,
2038}
2039#[derive(Clone, PartialEq, ::prost::Message)]
2044pub struct GetCampaignArchetypeBreakdownResponse {
2045 #[prost(message, repeated, tag="1")]
2048 pub shifts: ::prost::alloc::vec::Vec<ArchetypeShareShift>,
2049 #[prost(message, optional, tag="2")]
2052 pub before_snapshot_at: ::core::option::Option<::prost_types::Timestamp>,
2053 #[prost(message, optional, tag="3")]
2055 pub after_snapshot_at: ::core::option::Option<::prost_types::Timestamp>,
2056 #[prost(bool, tag="4")]
2060 pub insufficient_history: bool,
2061}
2062#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2069pub struct ResolveOrCreateShortCodeRequest {
2070 #[prost(string, tag="1")]
2073 pub campaign_id: ::prost::alloc::string::String,
2074}
2075#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2079pub struct ResolveOrCreateShortCodeResponse {
2080 #[prost(string, tag="1")]
2082 pub short_code: ::prost::alloc::string::String,
2083}
2084#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2091pub struct GetCampaignByShortCodeRequest {
2092 #[prost(string, tag="1")]
2095 pub short_code: ::prost::alloc::string::String,
2096}
2097#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2104pub struct GetCampaignByShortCodeResponse {
2105 #[prost(string, tag="1")]
2108 pub campaign_id: ::prost::alloc::string::String,
2109 #[prost(string, tag="2")]
2112 pub org_id: ::prost::alloc::string::String,
2113 #[prost(string, tag="3")]
2117 pub organization_name: ::prost::alloc::string::String,
2118 #[prost(string, tag="4")]
2122 pub subject: ::prost::alloc::string::String,
2123}
2124#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2130pub struct ChannelEvent {
2131 #[prost(string, tag="1")]
2132 pub org_id: ::prost::alloc::string::String,
2133 #[prost(string, tag="2")]
2134 pub campaign_id: ::prost::alloc::string::String,
2135 #[prost(string, tag="3")]
2136 pub recipient_user_id: ::prost::alloc::string::String,
2137 #[prost(enumeration="ChannelName", tag="4")]
2138 pub channel: i32,
2139 #[prost(enumeration="ChannelStepKind", tag="5")]
2140 pub step_kind: i32,
2141 #[prost(enumeration="ChannelEventStatus", tag="6")]
2142 pub status: i32,
2143 #[prost(enumeration="ChannelSkipReason", tag="7")]
2145 pub skip_reason: i32,
2146 #[prost(string, tag="8")]
2148 pub provider_message_id: ::prost::alloc::string::String,
2149 #[prost(int64, tag="9")]
2152 pub cost_micros: i64,
2153 #[prost(string, tag="10")]
2156 pub metadata_json: ::prost::alloc::string::String,
2157 #[prost(message, optional, tag="11")]
2158 pub occurred_at: ::core::option::Option<::prost_types::Timestamp>,
2159}
2160#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2161pub struct RecordChannelEventRequest {
2162 #[prost(message, optional, tag="1")]
2163 pub event: ::core::option::Option<ChannelEvent>,
2164}
2165#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2166pub struct RecordChannelEventResponse {
2167 #[prost(bool, tag="1")]
2170 pub accepted: bool,
2171 #[prost(string, tag="2")]
2174 pub reason: ::prost::alloc::string::String,
2175}
2176#[derive(Clone, PartialEq, ::prost::Message)]
2177pub struct RecordChannelEventBatchRequest {
2178 #[prost(message, repeated, tag="1")]
2179 pub events: ::prost::alloc::vec::Vec<ChannelEvent>,
2180}
2181#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2183pub struct RecordChannelEventBatchResult {
2184 #[prost(bool, tag="1")]
2185 pub accepted: bool,
2186 #[prost(string, tag="2")]
2187 pub reason: ::prost::alloc::string::String,
2188}
2189#[derive(Clone, PartialEq, ::prost::Message)]
2190pub struct RecordChannelEventBatchResponse {
2191 #[prost(message, repeated, tag="1")]
2192 pub results: ::prost::alloc::vec::Vec<RecordChannelEventBatchResult>,
2193}
2194#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2203#[repr(i32)]
2204pub enum ChannelName {
2205 Unspecified = 0,
2206 Email = 1,
2207 Webhook = 2,
2208 Telegram = 3,
2209 Slack = 4,
2210 Sms = 5,
2211 Whatsapp = 6,
2212 MicrosoftTeams = 7,
2213 Line = 8,
2214}
2215impl ChannelName {
2216 pub fn as_str_name(&self) -> &'static str {
2221 match self {
2222 Self::Unspecified => "CHANNEL_NAME_UNSPECIFIED",
2223 Self::Email => "CHANNEL_NAME_EMAIL",
2224 Self::Webhook => "CHANNEL_NAME_WEBHOOK",
2225 Self::Telegram => "CHANNEL_NAME_TELEGRAM",
2226 Self::Slack => "CHANNEL_NAME_SLACK",
2227 Self::Sms => "CHANNEL_NAME_SMS",
2228 Self::Whatsapp => "CHANNEL_NAME_WHATSAPP",
2229 Self::MicrosoftTeams => "CHANNEL_NAME_MICROSOFT_TEAMS",
2230 Self::Line => "CHANNEL_NAME_LINE",
2231 }
2232 }
2233 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2235 match value {
2236 "CHANNEL_NAME_UNSPECIFIED" => Some(Self::Unspecified),
2237 "CHANNEL_NAME_EMAIL" => Some(Self::Email),
2238 "CHANNEL_NAME_WEBHOOK" => Some(Self::Webhook),
2239 "CHANNEL_NAME_TELEGRAM" => Some(Self::Telegram),
2240 "CHANNEL_NAME_SLACK" => Some(Self::Slack),
2241 "CHANNEL_NAME_SMS" => Some(Self::Sms),
2242 "CHANNEL_NAME_WHATSAPP" => Some(Self::Whatsapp),
2243 "CHANNEL_NAME_MICROSOFT_TEAMS" => Some(Self::MicrosoftTeams),
2244 "CHANNEL_NAME_LINE" => Some(Self::Line),
2245 _ => None,
2246 }
2247 }
2248}
2249#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2253#[repr(i32)]
2254pub enum ChannelStepKind {
2255 Unspecified = 0,
2256 Reminder = 1,
2257 Escalation = 2,
2258}
2259impl ChannelStepKind {
2260 pub fn as_str_name(&self) -> &'static str {
2265 match self {
2266 Self::Unspecified => "CHANNEL_STEP_KIND_UNSPECIFIED",
2267 Self::Reminder => "CHANNEL_STEP_KIND_REMINDER",
2268 Self::Escalation => "CHANNEL_STEP_KIND_ESCALATION",
2269 }
2270 }
2271 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2273 match value {
2274 "CHANNEL_STEP_KIND_UNSPECIFIED" => Some(Self::Unspecified),
2275 "CHANNEL_STEP_KIND_REMINDER" => Some(Self::Reminder),
2276 "CHANNEL_STEP_KIND_ESCALATION" => Some(Self::Escalation),
2277 _ => None,
2278 }
2279 }
2280}
2281#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2285#[repr(i32)]
2286pub enum ChannelEventStatus {
2287 Unspecified = 0,
2288 Sent = 1,
2289 Delivered = 2,
2290 Opened = 3,
2291 Clicked = 4,
2292 Bounced = 5,
2293 Failed = 6,
2294 Skipped = 7,
2295}
2296impl ChannelEventStatus {
2297 pub fn as_str_name(&self) -> &'static str {
2302 match self {
2303 Self::Unspecified => "CHANNEL_EVENT_STATUS_UNSPECIFIED",
2304 Self::Sent => "CHANNEL_EVENT_STATUS_SENT",
2305 Self::Delivered => "CHANNEL_EVENT_STATUS_DELIVERED",
2306 Self::Opened => "CHANNEL_EVENT_STATUS_OPENED",
2307 Self::Clicked => "CHANNEL_EVENT_STATUS_CLICKED",
2308 Self::Bounced => "CHANNEL_EVENT_STATUS_BOUNCED",
2309 Self::Failed => "CHANNEL_EVENT_STATUS_FAILED",
2310 Self::Skipped => "CHANNEL_EVENT_STATUS_SKIPPED",
2311 }
2312 }
2313 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2315 match value {
2316 "CHANNEL_EVENT_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
2317 "CHANNEL_EVENT_STATUS_SENT" => Some(Self::Sent),
2318 "CHANNEL_EVENT_STATUS_DELIVERED" => Some(Self::Delivered),
2319 "CHANNEL_EVENT_STATUS_OPENED" => Some(Self::Opened),
2320 "CHANNEL_EVENT_STATUS_CLICKED" => Some(Self::Clicked),
2321 "CHANNEL_EVENT_STATUS_BOUNCED" => Some(Self::Bounced),
2322 "CHANNEL_EVENT_STATUS_FAILED" => Some(Self::Failed),
2323 "CHANNEL_EVENT_STATUS_SKIPPED" => Some(Self::Skipped),
2324 _ => None,
2325 }
2326 }
2327}
2328#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2331#[repr(i32)]
2332pub enum ChannelSkipReason {
2333 Unspecified = 0,
2334 OptedOut = 1,
2335 RegionBlocked = 2,
2336 CostCapExceeded = 3,
2337 NoIdentifier = 4,
2338}
2339impl ChannelSkipReason {
2340 pub fn as_str_name(&self) -> &'static str {
2345 match self {
2346 Self::Unspecified => "CHANNEL_SKIP_REASON_UNSPECIFIED",
2347 Self::OptedOut => "CHANNEL_SKIP_REASON_OPTED_OUT",
2348 Self::RegionBlocked => "CHANNEL_SKIP_REASON_REGION_BLOCKED",
2349 Self::CostCapExceeded => "CHANNEL_SKIP_REASON_COST_CAP_EXCEEDED",
2350 Self::NoIdentifier => "CHANNEL_SKIP_REASON_NO_IDENTIFIER",
2351 }
2352 }
2353 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2355 match value {
2356 "CHANNEL_SKIP_REASON_UNSPECIFIED" => Some(Self::Unspecified),
2357 "CHANNEL_SKIP_REASON_OPTED_OUT" => Some(Self::OptedOut),
2358 "CHANNEL_SKIP_REASON_REGION_BLOCKED" => Some(Self::RegionBlocked),
2359 "CHANNEL_SKIP_REASON_COST_CAP_EXCEEDED" => Some(Self::CostCapExceeded),
2360 "CHANNEL_SKIP_REASON_NO_IDENTIFIER" => Some(Self::NoIdentifier),
2361 _ => None,
2362 }
2363 }
2364}
2365#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2370pub struct Device {
2371 #[prost(string, tag="1")]
2374 pub device_id: ::prost::alloc::string::String,
2375 #[prost(string, tag="2")]
2378 pub user_id: ::prost::alloc::string::String,
2379 #[prost(enumeration="Platform", tag="3")]
2381 pub platform: i32,
2382 #[prost(string, tag="4")]
2384 pub push_token: ::prost::alloc::string::String,
2385 #[prost(bool, tag="5")]
2387 pub active: bool,
2388 #[prost(message, optional, tag="6")]
2390 pub last_seen: ::core::option::Option<::prost_types::Timestamp>,
2391 #[prost(message, optional, tag="7")]
2393 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2394}
2395#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2397pub struct DeviceSummary {
2398 #[prost(string, tag="1")]
2400 pub device_id: ::prost::alloc::string::String,
2401 #[prost(string, tag="2")]
2403 pub user_id: ::prost::alloc::string::String,
2404 #[prost(enumeration="Platform", tag="3")]
2406 pub platform: i32,
2407 #[prost(bool, tag="4")]
2409 pub active: bool,
2410 #[prost(message, optional, tag="5")]
2412 pub last_seen: ::core::option::Option<::prost_types::Timestamp>,
2413 #[prost(message, optional, tag="6")]
2415 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2416}
2417#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2419pub struct RegisterRequest {
2420 #[prost(string, tag="1")]
2423 pub device_id: ::prost::alloc::string::String,
2424 #[prost(enumeration="Platform", tag="2")]
2426 pub platform: i32,
2427 #[prost(string, tag="3")]
2430 pub push_token: ::prost::alloc::string::String,
2431}
2432#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2434pub struct RegisterResponse {
2435 #[prost(message, optional, tag="1")]
2437 pub device: ::core::option::Option<DeviceSummary>,
2438}
2439#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2441pub struct DeactivateRequest {
2442 #[prost(string, tag="1")]
2445 pub device_id: ::prost::alloc::string::String,
2446}
2447#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2449pub struct DeactivateResponse {
2450 #[prost(bool, tag="1")]
2452 pub success: bool,
2453}
2454#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2456pub struct ListDevicesRequest {
2457}
2458#[derive(Clone, PartialEq, ::prost::Message)]
2460pub struct ListDevicesResponse {
2461 #[prost(message, repeated, tag="1")]
2463 pub devices: ::prost::alloc::vec::Vec<DeviceSummary>,
2464}
2465#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2467pub struct ListMemberDevicesRequest {
2468 #[prost(string, tag="1")]
2471 pub user_id: ::prost::alloc::string::String,
2472}
2473#[derive(Clone, PartialEq, ::prost::Message)]
2475pub struct ListMemberDevicesResponse {
2476 #[prost(message, repeated, tag="1")]
2478 pub devices: ::prost::alloc::vec::Vec<DeviceSummary>,
2479}
2480#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2485pub struct UserSettings {
2486 #[prost(enumeration="ThemePreference", tag="1")]
2488 pub theme_preference: i32,
2489 #[prost(string, tag="2")]
2493 pub preferred_locale: ::prost::alloc::string::String,
2494}
2495#[derive(Clone, PartialEq, ::prost::Message)]
2498pub struct UserProfile {
2499 #[prost(string, tag="1")]
2502 pub first_name: ::prost::alloc::string::String,
2503 #[prost(string, tag="2")]
2506 pub last_name: ::prost::alloc::string::String,
2507 #[prost(string, tag="3")]
2510 pub department: ::prost::alloc::string::String,
2511 #[prost(string, tag="4")]
2514 pub title: ::prost::alloc::string::String,
2515 #[prost(string, tag="5")]
2518 pub phone: ::prost::alloc::string::String,
2519 #[prost(string, tag="6")]
2522 pub location: ::prost::alloc::string::String,
2523 #[prost(string, tag="7")]
2526 pub employee_id: ::prost::alloc::string::String,
2527 #[prost(string, tag="8")]
2530 pub manager_name: ::prost::alloc::string::String,
2531 #[prost(string, tag="9")]
2534 pub start_date: ::prost::alloc::string::String,
2535 #[prost(map="string, string", tag="10")]
2538 pub custom_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
2539 #[prost(string, tag="11")]
2543 pub manager_id: ::prost::alloc::string::String,
2544}
2545#[derive(Clone, PartialEq, ::prost::Message)]
2547pub struct User {
2548 #[prost(string, tag="1")]
2550 pub id: ::prost::alloc::string::String,
2551 #[prost(string, tag="2")]
2554 pub email: ::prost::alloc::string::String,
2555 #[prost(string, tag="3")]
2558 pub name: ::prost::alloc::string::String,
2559 #[prost(enumeration="UserStatus", tag="5")]
2561 pub status: i32,
2562 #[prost(message, optional, tag="6")]
2564 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2565 #[prost(message, optional, tag="7")]
2567 pub role: ::core::option::Option<Role>,
2568 #[prost(string, tag="8")]
2570 pub role_id: ::prost::alloc::string::String,
2571 #[prost(message, optional, tag="9")]
2574 pub profile: ::core::option::Option<UserProfile>,
2575 #[prost(bool, tag="10")]
2578 pub processing_restricted: bool,
2579 #[prost(string, tag="11")]
2582 pub data_governance_region: ::prost::alloc::string::String,
2583}
2584#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2588#[repr(i32)]
2589pub enum UserStatus {
2590 Unspecified = 0,
2592 Invited = 1,
2594 Active = 2,
2596 Deactivated = 3,
2598}
2599impl UserStatus {
2600 pub fn as_str_name(&self) -> &'static str {
2605 match self {
2606 Self::Unspecified => "USER_STATUS_UNSPECIFIED",
2607 Self::Invited => "USER_STATUS_INVITED",
2608 Self::Active => "USER_STATUS_ACTIVE",
2609 Self::Deactivated => "USER_STATUS_DEACTIVATED",
2610 }
2611 }
2612 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2614 match value {
2615 "USER_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
2616 "USER_STATUS_INVITED" => Some(Self::Invited),
2617 "USER_STATUS_ACTIVE" => Some(Self::Active),
2618 "USER_STATUS_DEACTIVATED" => Some(Self::Deactivated),
2619 _ => None,
2620 }
2621 }
2622}
2623#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2625#[repr(i32)]
2626pub enum ThemePreference {
2627 Unspecified = 0,
2629 Light = 1,
2631 Dark = 2,
2633 System = 3,
2635}
2636impl ThemePreference {
2637 pub fn as_str_name(&self) -> &'static str {
2642 match self {
2643 Self::Unspecified => "THEME_PREFERENCE_UNSPECIFIED",
2644 Self::Light => "THEME_PREFERENCE_LIGHT",
2645 Self::Dark => "THEME_PREFERENCE_DARK",
2646 Self::System => "THEME_PREFERENCE_SYSTEM",
2647 }
2648 }
2649 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2651 match value {
2652 "THEME_PREFERENCE_UNSPECIFIED" => Some(Self::Unspecified),
2653 "THEME_PREFERENCE_LIGHT" => Some(Self::Light),
2654 "THEME_PREFERENCE_DARK" => Some(Self::Dark),
2655 "THEME_PREFERENCE_SYSTEM" => Some(Self::System),
2656 _ => None,
2657 }
2658 }
2659}
2660#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2665pub struct Group {
2666 #[prost(string, tag="1")]
2668 pub id: ::prost::alloc::string::String,
2669 #[prost(string, tag="2")]
2672 pub name: ::prost::alloc::string::String,
2673 #[prost(string, tag="3")]
2676 pub description: ::prost::alloc::string::String,
2677 #[prost(int32, tag="4")]
2679 pub member_count: i32,
2680 #[prost(message, optional, tag="5")]
2682 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2683 #[prost(message, optional, tag="6")]
2685 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
2686 #[prost(bool, tag="7")]
2688 pub is_default: bool,
2689 #[prost(string, tag="8")]
2691 pub created_by: ::prost::alloc::string::String,
2692}
2693#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2695pub struct CreateGroupRequest {
2696 #[prost(string, tag="1")]
2699 pub name: ::prost::alloc::string::String,
2700 #[prost(string, tag="2")]
2703 pub description: ::prost::alloc::string::String,
2704}
2705#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2707pub struct CreateGroupResponse {
2708 #[prost(message, optional, tag="1")]
2710 pub group: ::core::option::Option<Group>,
2711}
2712#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2714pub struct GetGroupRequest {
2715 #[prost(string, tag="1")]
2717 pub group_id: ::prost::alloc::string::String,
2718}
2719#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2721pub struct GetGroupResponse {
2722 #[prost(message, optional, tag="1")]
2724 pub group: ::core::option::Option<Group>,
2725}
2726#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2728pub struct ListGroupsRequest {
2729 #[prost(message, optional, tag="1")]
2731 pub pagination: ::core::option::Option<Pagination>,
2732}
2733#[derive(Clone, PartialEq, ::prost::Message)]
2735pub struct ListGroupsResponse {
2736 #[prost(message, repeated, tag="1")]
2738 pub groups: ::prost::alloc::vec::Vec<Group>,
2739 #[prost(message, optional, tag="2")]
2741 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2742}
2743#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2745pub struct UpdateGroupRequest {
2746 #[prost(string, tag="1")]
2748 pub group_id: ::prost::alloc::string::String,
2749 #[prost(string, tag="2")]
2753 pub name: ::prost::alloc::string::String,
2754 #[prost(string, tag="3")]
2757 pub description: ::prost::alloc::string::String,
2758}
2759#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2761pub struct UpdateGroupResponse {
2762 #[prost(message, optional, tag="1")]
2764 pub group: ::core::option::Option<Group>,
2765}
2766#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2768pub struct DeleteGroupRequest {
2769 #[prost(string, tag="1")]
2772 pub group_id: ::prost::alloc::string::String,
2773}
2774#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2776pub struct DeleteGroupResponse {
2777}
2778#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2780pub struct AddGroupMembersRequest {
2781 #[prost(string, tag="1")]
2783 pub group_id: ::prost::alloc::string::String,
2784 #[prost(string, repeated, tag="2")]
2788 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2789}
2790#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2792pub struct AddGroupMembersResponse {
2793 #[prost(message, optional, tag="1")]
2795 pub group: ::core::option::Option<Group>,
2796}
2797#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2799pub struct RemoveGroupMembersRequest {
2800 #[prost(string, tag="1")]
2802 pub group_id: ::prost::alloc::string::String,
2803 #[prost(string, repeated, tag="2")]
2806 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2807}
2808#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2810pub struct RemoveGroupMembersResponse {
2811 #[prost(message, optional, tag="1")]
2813 pub group: ::core::option::Option<Group>,
2814}
2815#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2817pub struct ListGroupMembersRequest {
2818 #[prost(string, tag="1")]
2820 pub group_id: ::prost::alloc::string::String,
2821 #[prost(message, optional, tag="2")]
2823 pub pagination: ::core::option::Option<Pagination>,
2824}
2825#[derive(Clone, PartialEq, ::prost::Message)]
2827pub struct ListGroupMembersResponse {
2828 #[prost(message, repeated, tag="1")]
2830 pub users: ::prost::alloc::vec::Vec<User>,
2831 #[prost(message, optional, tag="2")]
2833 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2834}
2835#[derive(Clone, PartialEq, ::prost::Message)]
2837pub struct UserGroupMembership {
2838 #[prost(string, tag="1")]
2840 pub user_id: ::prost::alloc::string::String,
2841 #[prost(message, repeated, tag="2")]
2843 pub groups: ::prost::alloc::vec::Vec<Group>,
2844}
2845#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2847pub struct GetUserGroupMembershipsRequest {
2848 #[prost(string, repeated, tag="1")]
2851 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2852}
2853#[derive(Clone, PartialEq, ::prost::Message)]
2855pub struct GetUserGroupMembershipsResponse {
2856 #[prost(message, repeated, tag="1")]
2858 pub memberships: ::prost::alloc::vec::Vec<UserGroupMembership>,
2859}
2860#[derive(Clone, PartialEq, ::prost::Message)]
2864pub struct TouchEvent {
2865 #[prost(string, tag="1")]
2868 pub screen_name: ::prost::alloc::string::String,
2869 #[prost(float, tag="2")]
2872 pub x_pct: f32,
2873 #[prost(float, tag="3")]
2876 pub y_pct: f32,
2877 #[prost(enumeration="TouchEventType", tag="4")]
2879 pub event_type: i32,
2880 #[prost(int32, tag="5")]
2882 pub screen_width: i32,
2883 #[prost(int32, tag="6")]
2885 pub screen_height: i32,
2886 #[prost(message, optional, tag="7")]
2888 pub client_timestamp: ::core::option::Option<::prost_types::Timestamp>,
2889 #[prost(string, tag="8")]
2892 pub campaign_id: ::prost::alloc::string::String,
2893}
2894#[derive(Clone, PartialEq, ::prost::Message)]
2896pub struct IngestTouchEventsRequest {
2897 #[prost(message, repeated, tag="1")]
2900 pub events: ::prost::alloc::vec::Vec<TouchEvent>,
2901}
2902#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2904pub struct IngestTouchEventsResponse {
2905 #[prost(int32, tag="1")]
2907 pub ingested_count: i32,
2908}
2909#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2911pub struct HeatmapDataPoint {
2912 #[prost(float, tag="1")]
2914 pub x_pct: f32,
2915 #[prost(float, tag="2")]
2917 pub y_pct: f32,
2918 #[prost(float, tag="3")]
2920 pub value: f32,
2921}
2922#[derive(Clone, PartialEq, ::prost::Message)]
2924pub struct QueryHeatmapDataRequest {
2925 #[prost(string, tag="1")]
2928 pub screen_name: ::prost::alloc::string::String,
2929 #[prost(message, optional, tag="2")]
2931 pub date_from: ::core::option::Option<::prost_types::Timestamp>,
2932 #[prost(message, optional, tag="3")]
2934 pub date_to: ::core::option::Option<::prost_types::Timestamp>,
2935 #[prost(string, tag="4")]
2938 pub campaign_id: ::prost::alloc::string::String,
2939 #[prost(float, tag="6")]
2942 pub grid_resolution: f32,
2943 #[prost(enumeration="HeatmapMode", tag="7")]
2945 pub mode: i32,
2946 #[prost(enumeration="TouchEventType", repeated, tag="8")]
2948 pub event_types: ::prost::alloc::vec::Vec<i32>,
2949}
2950#[derive(Clone, PartialEq, ::prost::Message)]
2952pub struct QueryHeatmapDataResponse {
2953 #[prost(message, repeated, tag="1")]
2955 pub data_points: ::prost::alloc::vec::Vec<HeatmapDataPoint>,
2956 #[prost(string, tag="3")]
2959 pub screenshot_url: ::prost::alloc::string::String,
2960 #[prost(bool, tag="4")]
2962 pub cohort_enabled: bool,
2963}
2964#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2966pub struct UploadScreenshotRequest {
2967 #[prost(string, tag="1")]
2970 pub screen_name: ::prost::alloc::string::String,
2971 #[prost(string, tag="2")]
2973 pub app_version: ::prost::alloc::string::String,
2974 #[prost(bytes="vec", tag="3")]
2977 pub image_data: ::prost::alloc::vec::Vec<u8>,
2978}
2979#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2981pub struct UploadScreenshotResponse {
2982 #[prost(string, tag="1")]
2984 pub url: ::prost::alloc::string::String,
2985}
2986#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2988pub struct ScreenScreenshot {
2989 #[prost(string, tag="1")]
2991 pub screen_name: ::prost::alloc::string::String,
2992 #[prost(string, tag="2")]
2994 pub url: ::prost::alloc::string::String,
2995 #[prost(string, tag="3")]
2997 pub app_version: ::prost::alloc::string::String,
2998}
2999#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3001pub struct ListScreenshotsRequest {
3002}
3003#[derive(Clone, PartialEq, ::prost::Message)]
3005pub struct ListScreenshotsResponse {
3006 #[prost(message, repeated, tag="1")]
3008 pub screenshots: ::prost::alloc::vec::Vec<ScreenScreenshot>,
3009}
3010#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3014#[repr(i32)]
3015pub enum TouchEventType {
3016 Unspecified = 0,
3018 Tap = 1,
3020 LongPress = 2,
3022 Scroll = 3,
3024 ActionClick = 4,
3026}
3027impl TouchEventType {
3028 pub fn as_str_name(&self) -> &'static str {
3033 match self {
3034 Self::Unspecified => "TOUCH_EVENT_TYPE_UNSPECIFIED",
3035 Self::Tap => "TOUCH_EVENT_TYPE_TAP",
3036 Self::LongPress => "TOUCH_EVENT_TYPE_LONG_PRESS",
3037 Self::Scroll => "TOUCH_EVENT_TYPE_SCROLL",
3038 Self::ActionClick => "TOUCH_EVENT_TYPE_ACTION_CLICK",
3039 }
3040 }
3041 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3043 match value {
3044 "TOUCH_EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
3045 "TOUCH_EVENT_TYPE_TAP" => Some(Self::Tap),
3046 "TOUCH_EVENT_TYPE_LONG_PRESS" => Some(Self::LongPress),
3047 "TOUCH_EVENT_TYPE_SCROLL" => Some(Self::Scroll),
3048 "TOUCH_EVENT_TYPE_ACTION_CLICK" => Some(Self::ActionClick),
3049 _ => None,
3050 }
3051 }
3052}
3053#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3055#[repr(i32)]
3056pub enum HeatmapMode {
3057 Unspecified = 0,
3059 Total = 1,
3061 Median = 2,
3063}
3064impl HeatmapMode {
3065 pub fn as_str_name(&self) -> &'static str {
3070 match self {
3071 Self::Unspecified => "HEATMAP_MODE_UNSPECIFIED",
3072 Self::Total => "HEATMAP_MODE_TOTAL",
3073 Self::Median => "HEATMAP_MODE_MEDIAN",
3074 }
3075 }
3076 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3078 match value {
3079 "HEATMAP_MODE_UNSPECIFIED" => Some(Self::Unspecified),
3080 "HEATMAP_MODE_TOTAL" => Some(Self::Total),
3081 "HEATMAP_MODE_MEDIAN" => Some(Self::Median),
3082 _ => None,
3083 }
3084 }
3085}
3086#[derive(Clone, PartialEq, ::prost::Message)]
3090pub struct InboxEntry {
3091 #[prost(string, tag="1")]
3094 pub delivery_id: ::prost::alloc::string::String,
3095 #[prost(message, optional, tag="2")]
3097 pub message: ::core::option::Option<Message>,
3098 #[prost(enumeration="DeliveryStatus", tag="3")]
3100 pub status: i32,
3101 #[prost(bool, tag="4")]
3103 pub read: bool,
3104 #[prost(message, optional, tag="5")]
3106 pub received_at: ::core::option::Option<::prost_types::Timestamp>,
3107 #[prost(enumeration="delivery::Kind", tag="6")]
3111 pub kind: i32,
3112 #[prost(string, tag="7")]
3115 pub parent_delivery_id: ::prost::alloc::string::String,
3116 #[prost(string, tag="8")]
3119 pub rendered_locale: ::prost::alloc::string::String,
3120}
3121#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3123pub struct SyncRequest {
3124 #[prost(message, optional, tag="1")]
3126 pub since: ::core::option::Option<::prost_types::Timestamp>,
3127 #[prost(int32, tag="2")]
3130 pub limit: i32,
3131}
3132#[derive(Clone, PartialEq, ::prost::Message)]
3134pub struct SyncResponse {
3135 #[prost(message, repeated, tag="1")]
3137 pub entries: ::prost::alloc::vec::Vec<InboxEntry>,
3138 #[prost(message, optional, tag="2")]
3140 pub next_since: ::core::option::Option<::prost_types::Timestamp>,
3141}
3142#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3144pub struct MarkReadRequest {
3145 #[prost(string, tag="1")]
3148 pub delivery_id: ::prost::alloc::string::String,
3149}
3150#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3152pub struct MarkReadResponse {
3153 #[prost(bool, tag="1")]
3155 pub success: bool,
3156}
3157#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3159pub struct GetMessageRequest {
3160 #[prost(string, tag="1")]
3163 pub delivery_id: ::prost::alloc::string::String,
3164}
3165#[derive(Clone, PartialEq, ::prost::Message)]
3167pub struct GetMessageResponse {
3168 #[prost(message, optional, tag="1")]
3170 pub entry: ::core::option::Option<InboxEntry>,
3171}
3172#[derive(Clone, PartialEq, ::prost::Message)]
3177pub struct Archetype {
3178 #[prost(string, tag="1")]
3180 pub label: ::prost::alloc::string::String,
3181 #[prost(string, tag="2")]
3183 pub description: ::prost::alloc::string::String,
3184 #[prost(float, tag="3")]
3186 pub percentage: f32,
3187 #[prost(map="string, double", tag="4")]
3194 pub feature_centroid: ::std::collections::HashMap<::prost::alloc::string::String, f64>,
3195 #[prost(map="string, message", tag="5")]
3200 pub feature_breakdown: ::std::collections::HashMap<::prost::alloc::string::String, DimensionStats>,
3201 #[prost(message, optional, tag="6")]
3205 pub tap_heatmap: ::core::option::Option<TapHeatmap>,
3206 #[prost(message, optional, tag="7")]
3210 pub forecast: ::core::option::Option<ArchetypeForecast>,
3211 #[prost(message, repeated, tag="8")]
3217 pub exemplar_sessions: ::prost::alloc::vec::Vec<ExemplarSession>,
3218 #[prost(message, optional, tag="9")]
3221 pub screen_dwell: ::core::option::Option<ScreenDwell>,
3222 #[prost(message, optional, tag="10")]
3226 pub response_timeline: ::core::option::Option<ResponseTimeline>,
3227}
3228#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3233pub struct DimensionStats {
3234 #[prost(double, tag="1")]
3236 pub centroid: f64,
3237 #[prost(double, tag="2")]
3239 pub p25: f64,
3240 #[prost(double, tag="3")]
3242 pub p50: f64,
3243 #[prost(double, tag="4")]
3245 pub p75: f64,
3246 #[prost(double, tag="5")]
3249 pub group_p50: f64,
3250}
3251#[derive(Clone, PartialEq, ::prost::Message)]
3255pub struct TapHeatmap {
3256 #[prost(int32, tag="1")]
3258 pub width: i32,
3259 #[prost(int32, tag="2")]
3261 pub height: i32,
3262 #[prost(double, repeated, tag="3")]
3265 pub values: ::prost::alloc::vec::Vec<f64>,
3266 #[prost(int32, tag="4")]
3269 pub session_count: i32,
3270 #[prost(message, repeated, tag="5")]
3274 pub layers: ::prost::alloc::vec::Vec<TapHeatmapLayer>,
3275}
3276#[derive(Clone, PartialEq, ::prost::Message)]
3278pub struct TapHeatmapLayer {
3279 #[prost(string, tag="1")]
3282 pub event_type: ::prost::alloc::string::String,
3283 #[prost(double, repeated, tag="2")]
3286 pub values: ::prost::alloc::vec::Vec<f64>,
3287}
3288#[derive(Clone, PartialEq, ::prost::Message)]
3290pub struct ArchetypeForecast {
3291 #[prost(message, repeated, tag="1")]
3294 pub horizons: ::prost::alloc::vec::Vec<ForecastHorizon>,
3295}
3296#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3298pub struct ForecastHorizon {
3299 #[prost(int32, tag="1")]
3301 pub days: i32,
3302 #[prost(double, tag="2")]
3305 pub predicted_share: f64,
3306 #[prost(double, tag="3")]
3308 pub lower: f64,
3309 #[prost(double, tag="4")]
3311 pub upper: f64,
3312 #[prost(enumeration="ConfidenceLevel", tag="5")]
3314 pub confidence: i32,
3315}
3316#[derive(Clone, PartialEq, ::prost::Message)]
3319pub struct ExemplarSession {
3320 #[prost(string, tag="1")]
3323 pub session_id: ::prost::alloc::string::String,
3324 #[prost(int32, tag="2")]
3327 pub rank: i32,
3328 #[prost(double, tag="3")]
3330 pub distance: f64,
3331 #[prost(int32, tag="4")]
3333 pub duration_seconds: i32,
3334 #[prost(string, tag="5")]
3338 pub platform: ::prost::alloc::string::String,
3339}
3340#[derive(Clone, PartialEq, ::prost::Message)]
3344pub struct ScreenDwell {
3345 #[prost(message, repeated, tag="1")]
3348 pub entries: ::prost::alloc::vec::Vec<ScreenDwellEntry>,
3349}
3350#[derive(Clone, PartialEq, ::prost::Message)]
3351pub struct ScreenDwellEntry {
3352 #[prost(string, tag="1")]
3356 pub screen_name: ::prost::alloc::string::String,
3357 #[prost(double, tag="2")]
3359 pub median_seconds: f64,
3360 #[prost(double, tag="3")]
3362 pub p75_seconds: f64,
3363 #[prost(int32, tag="4")]
3365 pub session_count: i32,
3366}
3367#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3371pub struct ResponseTimeline {
3372 #[prost(message, optional, tag="1")]
3374 pub read_after_delivered: ::core::option::Option<LatencyPercentiles>,
3375 #[prost(message, optional, tag="2")]
3378 pub ack_after_read: ::core::option::Option<LatencyPercentiles>,
3379 #[prost(message, optional, tag="3")]
3382 pub ack_after_delivered: ::core::option::Option<LatencyPercentiles>,
3383 #[prost(int32, tag="4")]
3385 pub delivery_count: i32,
3386}
3387#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3389pub struct LatencyPercentiles {
3390 #[prost(double, tag="1")]
3391 pub p50: f64,
3392 #[prost(double, tag="2")]
3393 pub p75: f64,
3394 #[prost(double, tag="3")]
3395 pub p95: f64,
3396}
3397#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3400pub struct CohortPrediction {
3401 #[prost(float, tag="1")]
3403 pub predicted_ack_rate: f32,
3404 #[prost(float, tag="2")]
3406 pub confidence_low: f32,
3407 #[prost(float, tag="3")]
3409 pub confidence_high: f32,
3410 #[prost(enumeration="ConfidenceLevel", tag="4")]
3412 pub confidence_level: i32,
3413 #[prost(int32, tag="5")]
3415 pub data_point_count: i32,
3416}
3417#[derive(Clone, PartialEq, ::prost::Message)]
3419pub struct CampaignAdvisory {
3420 #[prost(message, optional, tag="1")]
3422 pub predicted_ack: ::core::option::Option<CohortPrediction>,
3423 #[prost(int32, tag="2")]
3426 pub suggested_escalation_delay_minutes: i32,
3427 #[prost(message, repeated, tag="3")]
3429 pub archetypes: ::prost::alloc::vec::Vec<Archetype>,
3430}
3431#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3433pub struct GetGroupArchetypesRequest {
3434 #[prost(string, tag="1")]
3436 pub group_id: ::prost::alloc::string::String,
3437}
3438#[derive(Clone, PartialEq, ::prost::Message)]
3440pub struct GetGroupArchetypesResponse {
3441 #[prost(message, repeated, tag="1")]
3443 pub archetypes: ::prost::alloc::vec::Vec<Archetype>,
3444 #[prost(int32, tag="2")]
3446 pub data_point_count: i32,
3447 #[prost(enumeration="PipelineState", tag="3")]
3451 pub pipeline_state: i32,
3452}
3453#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3455pub struct PredictCampaignAckRequest {
3456 #[prost(string, tag="1")]
3458 pub group_id: ::prost::alloc::string::String,
3459 #[prost(string, tag="2")]
3461 pub template_type: ::prost::alloc::string::String,
3462 #[prost(int32, tag="3")]
3464 pub workflow_step_count: i32,
3465}
3466#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3468pub struct PredictCampaignAckResponse {
3469 #[prost(message, optional, tag="1")]
3471 pub prediction: ::core::option::Option<CohortPrediction>,
3472}
3473#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3475pub struct GetCampaignAdvisoryRequest {
3476 #[prost(string, tag="1")]
3478 pub group_id: ::prost::alloc::string::String,
3479 #[prost(string, tag="2")]
3481 pub template_id: ::prost::alloc::string::String,
3482 #[prost(int32, tag="3")]
3484 pub template_version: i32,
3485 #[prost(int32, tag="4")]
3487 pub workflow_step_count: i32,
3488}
3489#[derive(Clone, PartialEq, ::prost::Message)]
3491pub struct GetCampaignAdvisoryResponse {
3492 #[prost(message, optional, tag="1")]
3494 pub advisory: ::core::option::Option<CampaignAdvisory>,
3495}
3496#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3498pub struct GetInsightNarrativeRequest {
3499 #[prost(string, tag="1")]
3501 pub group_id: ::prost::alloc::string::String,
3502 #[prost(string, tag="2")]
3504 pub prompt_name: ::prost::alloc::string::String,
3505}
3506#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3508pub struct GetInsightNarrativeResponse {
3509 #[prost(string, tag="1")]
3511 pub narrative: ::prost::alloc::string::String,
3512 #[prost(message, optional, tag="2")]
3514 pub generated_at: ::core::option::Option<::prost_types::Timestamp>,
3515 #[prost(string, tag="3")]
3517 pub model_id: ::prost::alloc::string::String,
3518}
3519#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3522pub struct TriggerMlPipelineRequest {
3523}
3524#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3526pub struct TriggerMlPipelineResponse {
3527 #[prost(int32, tag="1")]
3529 pub remaining_this_month: i32,
3530 #[prost(message, optional, tag="2")]
3532 pub last_trained_at: ::core::option::Option<::prost_types::Timestamp>,
3533}
3534#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3538pub struct TriggerArchetypeClusteringRequest {
3539 #[prost(string, tag="1")]
3541 pub group_id: ::prost::alloc::string::String,
3542}
3543#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3545pub struct TriggerArchetypeClusteringResponse {
3546 #[prost(string, tag="1")]
3549 pub workflow_id: ::prost::alloc::string::String,
3550 #[prost(int32, tag="2")]
3553 pub remaining_this_month: i32,
3554 #[prost(message, optional, tag="3")]
3557 pub last_clustered_at: ::core::option::Option<::prost_types::Timestamp>,
3558}
3559#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3563pub struct GenerateCampaignBodyDraftRequest {
3564 #[prost(string, tag="1")]
3566 pub group_id: ::prost::alloc::string::String,
3567 #[prost(string, tag="2")]
3569 pub archetype_label: ::prost::alloc::string::String,
3570 #[prost(string, tag="3")]
3573 pub lane_action: ::prost::alloc::string::String,
3574}
3575#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3577pub struct GenerateCampaignBodyDraftResponse {
3578 #[prost(string, tag="1")]
3581 pub body_markdown: ::prost::alloc::string::String,
3582}
3583#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3587#[repr(i32)]
3588pub enum ConfidenceLevel {
3589 Unspecified = 0,
3590 Low = 1,
3592 Medium = 2,
3594 High = 3,
3596}
3597impl ConfidenceLevel {
3598 pub fn as_str_name(&self) -> &'static str {
3603 match self {
3604 Self::Unspecified => "CONFIDENCE_LEVEL_UNSPECIFIED",
3605 Self::Low => "CONFIDENCE_LEVEL_LOW",
3606 Self::Medium => "CONFIDENCE_LEVEL_MEDIUM",
3607 Self::High => "CONFIDENCE_LEVEL_HIGH",
3608 }
3609 }
3610 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3612 match value {
3613 "CONFIDENCE_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
3614 "CONFIDENCE_LEVEL_LOW" => Some(Self::Low),
3615 "CONFIDENCE_LEVEL_MEDIUM" => Some(Self::Medium),
3616 "CONFIDENCE_LEVEL_HIGH" => Some(Self::High),
3617 _ => None,
3618 }
3619 }
3620}
3621#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3627#[repr(i32)]
3628pub enum PipelineState {
3629 Unspecified = 0,
3630 NeverRun = 1,
3633 BelowThreshold = 2,
3637 NoClusters = 3,
3641 Ready = 4,
3643}
3644impl PipelineState {
3645 pub fn as_str_name(&self) -> &'static str {
3650 match self {
3651 Self::Unspecified => "PIPELINE_STATE_UNSPECIFIED",
3652 Self::NeverRun => "PIPELINE_STATE_NEVER_RUN",
3653 Self::BelowThreshold => "PIPELINE_STATE_BELOW_THRESHOLD",
3654 Self::NoClusters => "PIPELINE_STATE_NO_CLUSTERS",
3655 Self::Ready => "PIPELINE_STATE_READY",
3656 }
3657 }
3658 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3660 match value {
3661 "PIPELINE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
3662 "PIPELINE_STATE_NEVER_RUN" => Some(Self::NeverRun),
3663 "PIPELINE_STATE_BELOW_THRESHOLD" => Some(Self::BelowThreshold),
3664 "PIPELINE_STATE_NO_CLUSTERS" => Some(Self::NoClusters),
3665 "PIPELINE_STATE_READY" => Some(Self::Ready),
3666 _ => None,
3667 }
3668 }
3669}
3670#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3675pub struct InviteLink {
3676 #[prost(string, tag="1")]
3678 pub id: ::prost::alloc::string::String,
3679 #[prost(string, tag="2")]
3681 pub token: ::prost::alloc::string::String,
3682 #[prost(string, tag="3")]
3684 pub role_id: ::prost::alloc::string::String,
3685 #[prost(int32, tag="4")]
3688 pub max_uses: i32,
3689 #[prost(int32, tag="5")]
3691 pub use_count: i32,
3692 #[prost(message, optional, tag="6")]
3694 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
3695 #[prost(message, optional, tag="7")]
3697 pub revoked_at: ::core::option::Option<::prost_types::Timestamp>,
3698 #[prost(string, tag="8")]
3700 pub created_by: ::prost::alloc::string::String,
3701 #[prost(message, optional, tag="9")]
3703 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
3704 #[prost(string, tag="10")]
3707 pub data_governance_region: ::prost::alloc::string::String,
3708}
3709#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3711pub struct CreateInviteLinkRequest {
3712 #[prost(string, tag="1")]
3714 pub role_id: ::prost::alloc::string::String,
3715 #[prost(int32, tag="2")]
3717 pub max_uses: i32,
3718 #[prost(int32, tag="3")]
3721 pub expires_in_hours: i32,
3722 #[prost(string, tag="4")]
3725 pub data_governance_region: ::prost::alloc::string::String,
3726}
3727#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3729pub struct CreateInviteLinkResponse {
3730 #[prost(message, optional, tag="1")]
3732 pub invite_link: ::core::option::Option<InviteLink>,
3733 #[prost(string, tag="2")]
3735 pub url: ::prost::alloc::string::String,
3736}
3737#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3739pub struct ListInviteLinksRequest {
3740}
3741#[derive(Clone, PartialEq, ::prost::Message)]
3743pub struct ListInviteLinksResponse {
3744 #[prost(message, repeated, tag="1")]
3746 pub invite_links: ::prost::alloc::vec::Vec<InviteLink>,
3747}
3748#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3750pub struct RevokeInviteLinkRequest {
3751 #[prost(string, tag="1")]
3753 pub invite_link_id: ::prost::alloc::string::String,
3754}
3755#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3757pub struct RevokeInviteLinkResponse {
3758}
3759#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3761pub struct RedeemInviteLinkRequest {
3762 #[prost(string, tag="1")]
3764 pub token: ::prost::alloc::string::String,
3765}
3766#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3768pub struct RedeemInviteLinkResponse {
3769 #[prost(string, tag="1")]
3771 pub organization_name: ::prost::alloc::string::String,
3772}
3773#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3775pub struct ValidateInviteLinkRequest {
3776 #[prost(string, tag="1")]
3778 pub token: ::prost::alloc::string::String,
3779 #[prost(string, tag="2")]
3782 pub email: ::prost::alloc::string::String,
3783}
3784#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3786pub struct ValidateInviteLinkResponse {
3787 #[prost(string, tag="1")]
3789 pub organization_name: ::prost::alloc::string::String,
3790}
3791#[derive(Clone, PartialEq, ::prost::Message)]
3795pub struct InviteUserRequest {
3796 #[prost(string, tag="1")]
3799 pub email: ::prost::alloc::string::String,
3800 #[prost(string, tag="2")]
3803 pub name: ::prost::alloc::string::String,
3804 #[prost(string, tag="4")]
3806 pub role_id: ::prost::alloc::string::String,
3807 #[prost(message, optional, tag="5")]
3809 pub profile: ::core::option::Option<UserProfile>,
3810 #[prost(string, tag="6")]
3813 pub data_governance_region: ::prost::alloc::string::String,
3814}
3815#[derive(Clone, PartialEq, ::prost::Message)]
3817pub struct InviteUserResponse {
3818 #[prost(message, optional, tag="1")]
3820 pub user: ::core::option::Option<User>,
3821}
3822#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3824pub struct GetUserRequest {
3825 #[prost(string, tag="1")]
3827 pub user_id: ::prost::alloc::string::String,
3828}
3829#[derive(Clone, PartialEq, ::prost::Message)]
3831pub struct GetUserResponse {
3832 #[prost(message, optional, tag="1")]
3834 pub user: ::core::option::Option<User>,
3835}
3836#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3838pub struct ListUsersRequest {
3839 #[prost(message, optional, tag="1")]
3841 pub pagination: ::core::option::Option<Pagination>,
3842}
3843#[derive(Clone, PartialEq, ::prost::Message)]
3845pub struct ListUsersResponse {
3846 #[prost(message, repeated, tag="1")]
3848 pub users: ::prost::alloc::vec::Vec<User>,
3849 #[prost(message, optional, tag="2")]
3851 pub pagination_meta: ::core::option::Option<PaginationMeta>,
3852}
3853#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3855pub struct UpdateUserRoleRequest {
3856 #[prost(string, tag="1")]
3858 pub user_id: ::prost::alloc::string::String,
3859 #[prost(string, tag="2")]
3861 pub role_id: ::prost::alloc::string::String,
3862}
3863#[derive(Clone, PartialEq, ::prost::Message)]
3865pub struct UpdateUserRoleResponse {
3866 #[prost(message, optional, tag="1")]
3868 pub user: ::core::option::Option<User>,
3869}
3870#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3872pub struct DeactivateUserRequest {
3873 #[prost(string, tag="1")]
3875 pub user_id: ::prost::alloc::string::String,
3876}
3877#[derive(Clone, PartialEq, ::prost::Message)]
3879pub struct DeactivateUserResponse {
3880 #[prost(message, optional, tag="1")]
3882 pub user: ::core::option::Option<User>,
3883}
3884#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3886pub struct ReactivateUserRequest {
3887 #[prost(string, tag="1")]
3889 pub user_id: ::prost::alloc::string::String,
3890}
3891#[derive(Clone, PartialEq, ::prost::Message)]
3893pub struct ReactivateUserResponse {
3894 #[prost(message, optional, tag="1")]
3896 pub user: ::core::option::Option<User>,
3897}
3898#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3900pub struct RevokeInviteRequest {
3901 #[prost(string, tag="1")]
3904 pub user_id: ::prost::alloc::string::String,
3905}
3906#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3908pub struct RevokeInviteResponse {
3909}
3910#[derive(Clone, PartialEq, ::prost::Message)]
3912pub struct UpdateUserProfileRequest {
3913 #[prost(string, tag="1")]
3916 pub user_id: ::prost::alloc::string::String,
3917 #[prost(message, optional, tag="2")]
3919 pub profile: ::core::option::Option<UserProfile>,
3920}
3921#[derive(Clone, PartialEq, ::prost::Message)]
3923pub struct UpdateUserProfileResponse {
3924 #[prost(message, optional, tag="1")]
3926 pub user: ::core::option::Option<User>,
3927}
3928#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3930pub struct GetUserSettingsRequest {
3931}
3932#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3934pub struct GetUserSettingsResponse {
3935 #[prost(message, optional, tag="1")]
3937 pub settings: ::core::option::Option<UserSettings>,
3938}
3939#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3941pub struct UpdateUserSettingsRequest {
3942 #[prost(message, optional, tag="1")]
3945 pub settings: ::core::option::Option<UserSettings>,
3946}
3947#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3949pub struct UpdateUserSettingsResponse {
3950 #[prost(message, optional, tag="1")]
3952 pub settings: ::core::option::Option<UserSettings>,
3953}
3954#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3956pub struct BulkInviteUsersRequest {
3957 #[prost(string, repeated, tag="1")]
3960 pub emails: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3961 #[prost(string, tag="2")]
3963 pub role_id: ::prost::alloc::string::String,
3964}
3965#[derive(Clone, PartialEq, ::prost::Message)]
3967pub struct BulkInviteResult {
3968 #[prost(string, tag="1")]
3970 pub email: ::prost::alloc::string::String,
3971 #[prost(bool, tag="2")]
3973 pub success: bool,
3974 #[prost(string, tag="3")]
3977 pub error: ::prost::alloc::string::String,
3978 #[prost(message, optional, tag="4")]
3980 pub user: ::core::option::Option<User>,
3981}
3982#[derive(Clone, PartialEq, ::prost::Message)]
3984pub struct BulkInviteUsersResponse {
3985 #[prost(message, repeated, tag="1")]
3987 pub results: ::prost::alloc::vec::Vec<BulkInviteResult>,
3988 #[prost(int32, tag="2")]
3990 pub invited_count: i32,
3991 #[prost(int32, tag="3")]
3993 pub failed_count: i32,
3994}
3995#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3999pub struct ConfirmPasskeyEnrollmentRequest {
4000}
4001#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4003pub struct ConfirmPasskeyEnrollmentResponse {
4004 #[prost(bool, tag="1")]
4006 pub confirmed: bool,
4007}
4008#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4010pub struct UpdateUserRegionRequest {
4011 #[prost(string, tag="1")]
4013 pub user_id: ::prost::alloc::string::String,
4014 #[prost(string, tag="2")]
4017 pub data_governance_region: ::prost::alloc::string::String,
4018}
4019#[derive(Clone, PartialEq, ::prost::Message)]
4021pub struct UpdateUserRegionResponse {
4022 #[prost(message, optional, tag="1")]
4024 pub user: ::core::option::Option<User>,
4025 #[prost(string, tag="2")]
4028 pub migration_workflow_id: ::prost::alloc::string::String,
4029}
4030#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4035pub struct SsoAttributeMapping {
4036 #[prost(string, tag="1")]
4039 pub idp_claim: ::prost::alloc::string::String,
4040 #[prost(string, tag="2")]
4044 pub profile_field: ::prost::alloc::string::String,
4045}
4046#[derive(Clone, PartialEq, ::prost::Message)]
4048pub struct Organization {
4049 #[prost(string, tag="1")]
4051 pub id: ::prost::alloc::string::String,
4052 #[prost(string, tag="2")]
4055 pub name: ::prost::alloc::string::String,
4056 #[prost(message, optional, tag="3")]
4058 pub default_workflow: ::core::option::Option<WorkflowDefinition>,
4059 #[prost(message, optional, tag="4")]
4061 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4062 #[prost(enumeration="Industry", tag="5")]
4064 pub industry: i32,
4065 #[prost(enumeration="CompanySize", tag="6")]
4067 pub company_size: i32,
4068 #[prost(message, repeated, tag="7")]
4071 pub sso_attribute_mappings: ::prost::alloc::vec::Vec<SsoAttributeMapping>,
4072 #[prost(string, tag="8")]
4076 pub default_locale: ::prost::alloc::string::String,
4077 #[prost(enumeration="OrgType", tag="9")]
4079 pub org_type: i32,
4080 #[prost(message, optional, tag="10")]
4082 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4083 #[prost(string, tag="11")]
4086 pub data_governance_region: ::prost::alloc::string::String,
4087 #[prost(string, tag="12")]
4090 pub data_content_region: ::prost::alloc::string::String,
4091 #[prost(int32, tag="13")]
4096 pub ml_retrain_cold_threshold: i32,
4097 #[prost(bool, tag="14")]
4099 pub ml_cancelled_counts: bool,
4100 #[prost(int32, tag="15")]
4102 pub ml_manual_limit_monthly: i32,
4103 #[prost(int32, tag="16")]
4105 pub ml_manual_retrains_used: i32,
4106 #[prost(bool, tag="17")]
4108 pub ml_needs_retrain: bool,
4109 #[prost(int32, tag="18")]
4111 pub campaigns_since_last_training: i32,
4112 #[prost(int32, tag="19")]
4114 pub total_completed_campaigns: i32,
4115 #[prost(message, optional, tag="20")]
4117 pub last_ml_training_at: ::core::option::Option<::prost_types::Timestamp>,
4118}
4119#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4123pub struct CreateOrganizationRequest {
4124 #[prost(string, tag="1")]
4127 pub name: ::prost::alloc::string::String,
4128 #[prost(enumeration="Industry", tag="2")]
4130 pub industry: i32,
4131 #[prost(enumeration="CompanySize", tag="3")]
4133 pub company_size: i32,
4134 #[prost(string, tag="4")]
4137 pub access_code: ::prost::alloc::string::String,
4138 #[prost(string, tag="5")]
4141 pub data_governance_region: ::prost::alloc::string::String,
4142}
4143#[derive(Clone, PartialEq, ::prost::Message)]
4145pub struct CreateOrganizationResponse {
4146 #[prost(message, optional, tag="1")]
4148 pub organization: ::core::option::Option<Organization>,
4149 #[prost(message, optional, tag="2")]
4151 pub admin_user: ::core::option::Option<User>,
4152}
4153#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4155pub struct GetOrganizationRequest {
4156}
4157#[derive(Clone, PartialEq, ::prost::Message)]
4159pub struct GetOrganizationResponse {
4160 #[prost(message, optional, tag="1")]
4162 pub organization: ::core::option::Option<Organization>,
4163}
4164#[derive(Clone, PartialEq, ::prost::Message)]
4166pub struct UpdateOrganizationRequest {
4167 #[prost(string, tag="1")]
4170 pub name: ::prost::alloc::string::String,
4171 #[prost(message, optional, tag="2")]
4173 pub default_workflow: ::core::option::Option<WorkflowDefinition>,
4174 #[prost(enumeration="Industry", tag="3")]
4176 pub industry: i32,
4177 #[prost(enumeration="CompanySize", tag="4")]
4179 pub company_size: i32,
4180 #[prost(string, tag="5")]
4183 pub default_locale: ::prost::alloc::string::String,
4184 #[prost(int32, tag="6")]
4186 pub ml_retrain_cold_threshold: i32,
4187 #[prost(bool, optional, tag="7")]
4190 pub ml_cancelled_counts: ::core::option::Option<bool>,
4191 #[prost(int32, tag="8")]
4194 pub ml_manual_limit_monthly: i32,
4195}
4196#[derive(Clone, PartialEq, ::prost::Message)]
4198pub struct UpdateOrganizationResponse {
4199 #[prost(message, optional, tag="1")]
4201 pub organization: ::core::option::Option<Organization>,
4202}
4203#[derive(Clone, PartialEq, ::prost::Message)]
4205pub struct UpdateSsoAttributeMappingsRequest {
4206 #[prost(message, repeated, tag="1")]
4208 pub sso_attribute_mappings: ::prost::alloc::vec::Vec<SsoAttributeMapping>,
4209}
4210#[derive(Clone, PartialEq, ::prost::Message)]
4212pub struct UpdateSsoAttributeMappingsResponse {
4213 #[prost(message, optional, tag="1")]
4215 pub organization: ::core::option::Option<Organization>,
4216}
4217#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4219pub struct RotateAnalyticsSaltRequest {
4220 #[prost(int32, tag="1")]
4222 pub new_bucket_count: i32,
4223}
4224#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4226pub struct RotateAnalyticsSaltResponse {
4227 #[prost(int32, tag="1")]
4229 pub bucket_count: i32,
4230}
4231#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4233pub struct UpdateAnalyticsEpsilonRequest {
4234 #[prost(float, tag="1")]
4236 pub epsilon: f32,
4237}
4238#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4240pub struct UpdateAnalyticsEpsilonResponse {
4241 #[prost(float, tag="1")]
4243 pub epsilon: f32,
4244}
4245#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4247pub struct CreateSandboxOrganizationRequest {
4248 #[prost(string, tag="1")]
4251 pub name: ::prost::alloc::string::String,
4252 #[prost(message, optional, tag="2")]
4255 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4256 #[prost(string, tag="3")]
4259 pub data_governance_region: ::prost::alloc::string::String,
4260 #[prost(string, tag="4")]
4264 pub fixture_id: ::prost::alloc::string::String,
4265}
4266#[derive(Clone, PartialEq, ::prost::Message)]
4268pub struct CreateSandboxOrganizationResponse {
4269 #[prost(message, optional, tag="1")]
4271 pub organization: ::core::option::Option<Organization>,
4272 #[prost(message, optional, tag="2")]
4274 pub admin_user: ::core::option::Option<User>,
4275}
4276#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4279pub struct DeleteSandboxOrganizationRequest {
4280 #[prost(string, tag="1")]
4282 pub org_id: ::prost::alloc::string::String,
4283}
4284#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4287pub struct DeleteSandboxOrganizationResponse {
4288 #[prost(string, tag="1")]
4290 pub workflow_id: ::prost::alloc::string::String,
4291}
4292#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4294pub struct SandboxFixture {
4295 #[prost(string, tag="1")]
4297 pub id: ::prost::alloc::string::String,
4298 #[prost(string, tag="2")]
4300 pub name: ::prost::alloc::string::String,
4301 #[prost(string, tag="3")]
4303 pub description: ::prost::alloc::string::String,
4304 #[prost(bool, tag="4")]
4307 pub is_default: bool,
4308}
4309#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4312pub struct ListSandboxFixturesRequest {
4313}
4314#[derive(Clone, PartialEq, ::prost::Message)]
4316pub struct ListSandboxFixturesResponse {
4317 #[prost(message, repeated, tag="1")]
4319 pub fixtures: ::prost::alloc::vec::Vec<SandboxFixture>,
4320}
4321#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4324pub struct ListUserOrganizationsRequest {
4325}
4326#[derive(Clone, PartialEq, ::prost::Message)]
4328pub struct ListUserOrganizationsResponse {
4329 #[prost(message, repeated, tag="1")]
4332 pub organizations: ::prost::alloc::vec::Vec<Organization>,
4333}
4334#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4339pub struct ListUserSandboxesRequest {
4340}
4341#[derive(Clone, PartialEq, ::prost::Message)]
4343pub struct ListUserSandboxesResponse {
4344 #[prost(message, repeated, tag="1")]
4349 pub sandboxes: ::prost::alloc::vec::Vec<Organization>,
4350}
4351#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4355#[repr(i32)]
4356pub enum Industry {
4357 Unspecified = 0,
4358 Technology = 1,
4359 Finance = 2,
4360 Healthcare = 3,
4361 Education = 4,
4362 Retail = 5,
4363 Manufacturing = 6,
4364 Media = 7,
4365 Other = 8,
4366}
4367impl Industry {
4368 pub fn as_str_name(&self) -> &'static str {
4373 match self {
4374 Self::Unspecified => "INDUSTRY_UNSPECIFIED",
4375 Self::Technology => "INDUSTRY_TECHNOLOGY",
4376 Self::Finance => "INDUSTRY_FINANCE",
4377 Self::Healthcare => "INDUSTRY_HEALTHCARE",
4378 Self::Education => "INDUSTRY_EDUCATION",
4379 Self::Retail => "INDUSTRY_RETAIL",
4380 Self::Manufacturing => "INDUSTRY_MANUFACTURING",
4381 Self::Media => "INDUSTRY_MEDIA",
4382 Self::Other => "INDUSTRY_OTHER",
4383 }
4384 }
4385 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4387 match value {
4388 "INDUSTRY_UNSPECIFIED" => Some(Self::Unspecified),
4389 "INDUSTRY_TECHNOLOGY" => Some(Self::Technology),
4390 "INDUSTRY_FINANCE" => Some(Self::Finance),
4391 "INDUSTRY_HEALTHCARE" => Some(Self::Healthcare),
4392 "INDUSTRY_EDUCATION" => Some(Self::Education),
4393 "INDUSTRY_RETAIL" => Some(Self::Retail),
4394 "INDUSTRY_MANUFACTURING" => Some(Self::Manufacturing),
4395 "INDUSTRY_MEDIA" => Some(Self::Media),
4396 "INDUSTRY_OTHER" => Some(Self::Other),
4397 _ => None,
4398 }
4399 }
4400}
4401#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4403#[repr(i32)]
4404pub enum CompanySize {
4405 Unspecified = 0,
4406 CompanySize1200 = 1,
4407 CompanySize200500 = 2,
4408 CompanySize5001000 = 3,
4409 CompanySize10005000 = 4,
4410 CompanySize5000Plus = 5,
4411}
4412impl CompanySize {
4413 pub fn as_str_name(&self) -> &'static str {
4418 match self {
4419 Self::Unspecified => "COMPANY_SIZE_UNSPECIFIED",
4420 Self::CompanySize1200 => "COMPANY_SIZE_1_200",
4421 Self::CompanySize200500 => "COMPANY_SIZE_200_500",
4422 Self::CompanySize5001000 => "COMPANY_SIZE_500_1000",
4423 Self::CompanySize10005000 => "COMPANY_SIZE_1000_5000",
4424 Self::CompanySize5000Plus => "COMPANY_SIZE_5000_PLUS",
4425 }
4426 }
4427 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4429 match value {
4430 "COMPANY_SIZE_UNSPECIFIED" => Some(Self::Unspecified),
4431 "COMPANY_SIZE_1_200" => Some(Self::CompanySize1200),
4432 "COMPANY_SIZE_200_500" => Some(Self::CompanySize200500),
4433 "COMPANY_SIZE_500_1000" => Some(Self::CompanySize5001000),
4434 "COMPANY_SIZE_1000_5000" => Some(Self::CompanySize10005000),
4435 "COMPANY_SIZE_5000_PLUS" => Some(Self::CompanySize5000Plus),
4436 _ => None,
4437 }
4438 }
4439}
4440#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4442#[repr(i32)]
4443pub enum OrgType {
4444 Unspecified = 0,
4445 Standard = 1,
4446 Sandbox = 2,
4447 Staff = 3,
4450}
4451impl OrgType {
4452 pub fn as_str_name(&self) -> &'static str {
4457 match self {
4458 Self::Unspecified => "ORG_TYPE_UNSPECIFIED",
4459 Self::Standard => "ORG_TYPE_STANDARD",
4460 Self::Sandbox => "ORG_TYPE_SANDBOX",
4461 Self::Staff => "ORG_TYPE_STAFF",
4462 }
4463 }
4464 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4466 match value {
4467 "ORG_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
4468 "ORG_TYPE_STANDARD" => Some(Self::Standard),
4469 "ORG_TYPE_SANDBOX" => Some(Self::Sandbox),
4470 "ORG_TYPE_STAFF" => Some(Self::Staff),
4471 _ => None,
4472 }
4473 }
4474}
4475#[derive(Clone, PartialEq, ::prost::Message)]
4479pub struct UserRenderContext {
4480 #[prost(string, tag="1")]
4482 pub user_id: ::prost::alloc::string::String,
4483 #[prost(map="string, string", tag="2")]
4486 pub variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4487}
4488#[derive(Clone, PartialEq, ::prost::Message)]
4490pub struct RenderBatchRequest {
4491 #[prost(string, tag="1")]
4493 pub template_id: ::prost::alloc::string::String,
4494 #[prost(int32, tag="2")]
4496 pub version: i32,
4497 #[prost(message, repeated, tag="3")]
4500 pub users: ::prost::alloc::vec::Vec<UserRenderContext>,
4501}
4502#[derive(Clone, PartialEq, ::prost::Message)]
4505pub struct RenderBatchResponse {
4506 #[prost(string, tag="1")]
4508 pub user_id: ::prost::alloc::string::String,
4509 #[prost(message, optional, tag="2")]
4511 pub message: ::core::option::Option<Message>,
4512 #[prost(string, tag="3")]
4514 pub error: ::prost::alloc::string::String,
4515}
4516#[derive(Clone, PartialEq, ::prost::Message)]
4521pub struct SessionRecording {
4522 #[prost(string, tag="1")]
4524 pub id: ::prost::alloc::string::String,
4525 #[prost(message, optional, tag="2")]
4527 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
4528 #[prost(message, optional, tag="3")]
4530 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
4531 #[prost(int32, tag="4")]
4533 pub duration_seconds: i32,
4534 #[prost(float, tag="5")]
4536 pub activity_score: f32,
4537}
4538#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4540pub struct ListSessionRecordingsRequest {
4541 #[prost(string, tag="1")]
4544 pub campaign_id: ::prost::alloc::string::String,
4545 #[prost(message, optional, tag="2")]
4547 pub date_from: ::core::option::Option<::prost_types::Timestamp>,
4548 #[prost(message, optional, tag="3")]
4550 pub date_to: ::core::option::Option<::prost_types::Timestamp>,
4551 #[prost(message, optional, tag="4")]
4553 pub pagination: ::core::option::Option<Pagination>,
4554}
4555#[derive(Clone, PartialEq, ::prost::Message)]
4557pub struct ListSessionRecordingsResponse {
4558 #[prost(message, repeated, tag="1")]
4560 pub recordings: ::prost::alloc::vec::Vec<SessionRecording>,
4561 #[prost(message, optional, tag="2")]
4563 pub pagination_meta: ::core::option::Option<PaginationMeta>,
4564}
4565#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4567pub struct GetSessionSnapshotsRequest {
4568 #[prost(string, tag="1")]
4571 pub recording_id: ::prost::alloc::string::String,
4572}
4573#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4575pub struct GetSessionSnapshotsResponse {
4576 #[prost(string, tag="1")]
4579 pub snapshot_data: ::prost::alloc::string::String,
4580}
4581#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4585pub struct ListRolesRequest {
4586}
4587#[derive(Clone, PartialEq, ::prost::Message)]
4589pub struct ListRolesResponse {
4590 #[prost(message, repeated, tag="1")]
4592 pub roles: ::prost::alloc::vec::Vec<Role>,
4593}
4594#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4596pub struct CreateRoleRequest {
4597 #[prost(string, tag="1")]
4600 pub name: ::prost::alloc::string::String,
4601 #[prost(enumeration="Permission", repeated, tag="2")]
4604 pub permissions: ::prost::alloc::vec::Vec<i32>,
4605}
4606#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4608pub struct CreateRoleResponse {
4609 #[prost(message, optional, tag="1")]
4611 pub role: ::core::option::Option<Role>,
4612}
4613#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4615pub struct UpdateRoleRequest {
4616 #[prost(string, tag="1")]
4618 pub role_id: ::prost::alloc::string::String,
4619 #[prost(string, tag="2")]
4621 pub name: ::prost::alloc::string::String,
4622 #[prost(enumeration="Permission", repeated, tag="3")]
4626 pub permissions: ::prost::alloc::vec::Vec<i32>,
4627}
4628#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4630pub struct UpdateRoleResponse {
4631 #[prost(message, optional, tag="1")]
4633 pub role: ::core::option::Option<Role>,
4634}
4635#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4637pub struct DeleteRoleRequest {
4638 #[prost(string, tag="1")]
4640 pub role_id: ::prost::alloc::string::String,
4641}
4642#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4644pub struct DeleteRoleResponse {
4645}
4646#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4652pub struct SamlAttributeNames {
4653 #[prost(string, tag="1")]
4655 pub email: ::prost::alloc::string::String,
4656 #[prost(string, tag="2")]
4658 pub given_name: ::prost::alloc::string::String,
4659 #[prost(string, tag="3")]
4661 pub family_name: ::prost::alloc::string::String,
4662}
4663#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4665pub struct SsoProvider {
4666 #[prost(string, tag="1")]
4668 pub id: ::prost::alloc::string::String,
4669 #[prost(string, tag="2")]
4672 pub domain: ::prost::alloc::string::String,
4673 #[prost(enumeration="SsoProviderType", tag="3")]
4675 pub r#type: i32,
4676 #[prost(string, tag="4")]
4679 pub metadata_url: ::prost::alloc::string::String,
4680 #[prost(string, tag="5")]
4683 pub idp_provider_name: ::prost::alloc::string::String,
4684 #[prost(message, optional, tag="6")]
4686 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4687 #[prost(message, optional, tag="7")]
4689 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
4690 #[prost(message, optional, tag="8")]
4692 pub attribute_mapping: ::core::option::Option<SamlAttributeNames>,
4693}
4694#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4697pub struct CheckSsoByDomainRequest {
4698 #[prost(string, tag="1")]
4701 pub email: ::prost::alloc::string::String,
4702}
4703#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4705pub struct CheckSsoByDomainResponse {
4706 #[prost(bool, tag="1")]
4708 pub sso_enabled: bool,
4709 #[prost(string, tag="2")]
4712 pub provider_name: ::prost::alloc::string::String,
4713}
4714#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4716pub struct CreateSsoProviderRequest {
4717 #[prost(string, tag="1")]
4720 pub domain: ::prost::alloc::string::String,
4721 #[prost(enumeration="SsoProviderType", tag="2")]
4723 pub r#type: i32,
4724 #[prost(string, tag="3")]
4727 pub metadata_url: ::prost::alloc::string::String,
4728 #[prost(message, optional, tag="4")]
4731 pub attribute_mapping: ::core::option::Option<SamlAttributeNames>,
4732}
4733#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4735pub struct CreateSsoProviderResponse {
4736 #[prost(message, optional, tag="1")]
4738 pub provider: ::core::option::Option<SsoProvider>,
4739}
4740#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4743pub struct GetSsoProviderRequest {
4744}
4745#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4747pub struct GetSsoProviderResponse {
4748 #[prost(message, optional, tag="1")]
4750 pub provider: ::core::option::Option<SsoProvider>,
4751}
4752#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4754pub struct DeleteSsoProviderRequest {
4755 #[prost(string, tag="1")]
4757 pub provider_id: ::prost::alloc::string::String,
4758}
4759#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4761pub struct DeleteSsoProviderResponse {
4762}
4763#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4767#[repr(i32)]
4768pub enum SsoProviderType {
4769 Unspecified = 0,
4771 Saml = 1,
4773 Oidc = 2,
4775}
4776impl SsoProviderType {
4777 pub fn as_str_name(&self) -> &'static str {
4782 match self {
4783 Self::Unspecified => "SSO_PROVIDER_TYPE_UNSPECIFIED",
4784 Self::Saml => "SSO_PROVIDER_TYPE_SAML",
4785 Self::Oidc => "SSO_PROVIDER_TYPE_OIDC",
4786 }
4787 }
4788 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4790 match value {
4791 "SSO_PROVIDER_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
4792 "SSO_PROVIDER_TYPE_SAML" => Some(Self::Saml),
4793 "SSO_PROVIDER_TYPE_OIDC" => Some(Self::Oidc),
4794 _ => None,
4795 }
4796 }
4797}
4798#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4804pub struct Team {
4805 #[prost(string, tag="1")]
4807 pub id: ::prost::alloc::string::String,
4808 #[prost(string, tag="2")]
4811 pub name: ::prost::alloc::string::String,
4812 #[prost(string, tag="3")]
4815 pub description: ::prost::alloc::string::String,
4816 #[prost(int32, tag="4")]
4818 pub member_count: i32,
4819 #[prost(message, optional, tag="5")]
4821 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4822 #[prost(message, optional, tag="6")]
4824 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
4825 #[prost(bool, tag="7")]
4827 pub is_default: bool,
4828 #[prost(string, tag="8")]
4830 pub created_by: ::prost::alloc::string::String,
4831}
4832#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4834pub struct CreateTeamRequest {
4835 #[prost(string, tag="1")]
4838 pub name: ::prost::alloc::string::String,
4839 #[prost(string, tag="2")]
4842 pub description: ::prost::alloc::string::String,
4843}
4844#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4846pub struct CreateTeamResponse {
4847 #[prost(message, optional, tag="1")]
4849 pub team: ::core::option::Option<Team>,
4850}
4851#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4853pub struct GetTeamRequest {
4854 #[prost(string, tag="1")]
4856 pub team_id: ::prost::alloc::string::String,
4857}
4858#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4860pub struct GetTeamResponse {
4861 #[prost(message, optional, tag="1")]
4863 pub team: ::core::option::Option<Team>,
4864}
4865#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4867pub struct ListTeamsRequest {
4868 #[prost(message, optional, tag="1")]
4870 pub pagination: ::core::option::Option<Pagination>,
4871}
4872#[derive(Clone, PartialEq, ::prost::Message)]
4874pub struct ListTeamsResponse {
4875 #[prost(message, repeated, tag="1")]
4877 pub teams: ::prost::alloc::vec::Vec<Team>,
4878 #[prost(message, optional, tag="2")]
4880 pub pagination_meta: ::core::option::Option<PaginationMeta>,
4881}
4882#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4884pub struct UpdateTeamRequest {
4885 #[prost(string, tag="1")]
4887 pub team_id: ::prost::alloc::string::String,
4888 #[prost(string, tag="2")]
4892 pub name: ::prost::alloc::string::String,
4893 #[prost(string, tag="3")]
4896 pub description: ::prost::alloc::string::String,
4897}
4898#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4900pub struct UpdateTeamResponse {
4901 #[prost(message, optional, tag="1")]
4903 pub team: ::core::option::Option<Team>,
4904}
4905#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4907pub struct DeleteTeamRequest {
4908 #[prost(string, tag="1")]
4911 pub team_id: ::prost::alloc::string::String,
4912}
4913#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4915pub struct DeleteTeamResponse {
4916}
4917#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4919pub struct AddTeamMembersRequest {
4920 #[prost(string, tag="1")]
4922 pub team_id: ::prost::alloc::string::String,
4923 #[prost(string, repeated, tag="2")]
4927 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4928}
4929#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4931pub struct AddTeamMembersResponse {
4932 #[prost(message, optional, tag="1")]
4934 pub team: ::core::option::Option<Team>,
4935}
4936#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4938pub struct RemoveTeamMembersRequest {
4939 #[prost(string, tag="1")]
4941 pub team_id: ::prost::alloc::string::String,
4942 #[prost(string, repeated, tag="2")]
4945 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4946}
4947#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4949pub struct RemoveTeamMembersResponse {
4950 #[prost(message, optional, tag="1")]
4952 pub team: ::core::option::Option<Team>,
4953}
4954#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4956pub struct ListTeamMembersRequest {
4957 #[prost(string, tag="1")]
4959 pub team_id: ::prost::alloc::string::String,
4960 #[prost(message, optional, tag="2")]
4962 pub pagination: ::core::option::Option<Pagination>,
4963}
4964#[derive(Clone, PartialEq, ::prost::Message)]
4966pub struct ListTeamMembersResponse {
4967 #[prost(message, repeated, tag="1")]
4969 pub users: ::prost::alloc::vec::Vec<User>,
4970 #[prost(message, optional, tag="2")]
4972 pub pagination_meta: ::core::option::Option<PaginationMeta>,
4973}
4974#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4978pub struct TemplateVariable {
4979 #[prost(string, tag="1")]
4982 pub name: ::prost::alloc::string::String,
4983 #[prost(string, tag="2")]
4986 pub description: ::prost::alloc::string::String,
4987 #[prost(bool, tag="3")]
4989 pub required: bool,
4990 #[prost(enumeration="TemplateVariableSource", tag="4")]
4992 pub source: i32,
4993 #[prost(string, tag="5")]
4996 pub default_value: ::prost::alloc::string::String,
4997 #[prost(bool, tag="6")]
5000 pub pii: bool,
5001}
5002#[derive(Clone, PartialEq, ::prost::Message)]
5005pub struct Template {
5006 #[prost(string, tag="1")]
5008 pub id: ::prost::alloc::string::String,
5009 #[prost(string, tag="2")]
5012 pub name: ::prost::alloc::string::String,
5013 #[prost(string, tag="3")]
5016 pub body: ::prost::alloc::string::String,
5017 #[prost(message, repeated, tag="4")]
5019 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5020 #[prost(int32, tag="5")]
5022 pub version: i32,
5023 #[prost(message, optional, tag="6")]
5025 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5026 #[prost(message, optional, tag="7")]
5028 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
5029 #[prost(string, tag="8")]
5033 pub title: ::prost::alloc::string::String,
5034 #[prost(enumeration="TemplateType", tag="9")]
5037 pub r#type: i32,
5038 #[prost(string, tag="10")]
5042 pub source_locale: ::prost::alloc::string::String,
5043}
5044#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5047pub struct TemplateTranslation {
5048 #[prost(string, tag="1")]
5050 pub id: ::prost::alloc::string::String,
5051 #[prost(string, tag="2")]
5053 pub template_id: ::prost::alloc::string::String,
5054 #[prost(int32, tag="3")]
5056 pub version: i32,
5057 #[prost(string, tag="4")]
5059 pub locale: ::prost::alloc::string::String,
5060 #[prost(string, tag="5")]
5063 pub title: ::prost::alloc::string::String,
5064 #[prost(string, tag="6")]
5067 pub body: ::prost::alloc::string::String,
5068 #[prost(enumeration="TranslationStatus", tag="7")]
5070 pub status: i32,
5071 #[prost(string, tag="8")]
5073 pub translated_by: ::prost::alloc::string::String,
5074 #[prost(string, tag="9")]
5076 pub reviewed_by: ::prost::alloc::string::String,
5077 #[prost(message, optional, tag="10")]
5079 pub reviewed_at: ::core::option::Option<::prost_types::Timestamp>,
5080 #[prost(message, optional, tag="11")]
5082 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5083}
5084#[derive(Clone, PartialEq, ::prost::Message)]
5086pub struct CreateTemplateRequest {
5087 #[prost(string, tag="1")]
5090 pub name: ::prost::alloc::string::String,
5091 #[prost(string, tag="2")]
5094 pub body: ::prost::alloc::string::String,
5095 #[prost(message, repeated, tag="3")]
5097 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5098 #[prost(string, tag="4")]
5101 pub title: ::prost::alloc::string::String,
5102 #[prost(enumeration="TemplateType", tag="5")]
5104 pub r#type: i32,
5105 #[prost(string, tag="6")]
5108 pub source_locale: ::prost::alloc::string::String,
5109}
5110#[derive(Clone, PartialEq, ::prost::Message)]
5112pub struct CreateTemplateResponse {
5113 #[prost(message, optional, tag="1")]
5115 pub template: ::core::option::Option<Template>,
5116}
5117#[derive(Clone, PartialEq, ::prost::Message)]
5119pub struct UpdateTemplateRequest {
5120 #[prost(string, tag="1")]
5122 pub template_id: ::prost::alloc::string::String,
5123 #[prost(string, tag="2")]
5126 pub body: ::prost::alloc::string::String,
5127 #[prost(message, repeated, tag="3")]
5129 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5130}
5131#[derive(Clone, PartialEq, ::prost::Message)]
5133pub struct UpdateTemplateResponse {
5134 #[prost(message, optional, tag="1")]
5136 pub template: ::core::option::Option<Template>,
5137}
5138#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5140pub struct GetTemplateRequest {
5141 #[prost(string, tag="1")]
5143 pub template_id: ::prost::alloc::string::String,
5144 #[prost(int32, tag="2")]
5146 pub version: i32,
5147}
5148#[derive(Clone, PartialEq, ::prost::Message)]
5150pub struct GetTemplateResponse {
5151 #[prost(message, optional, tag="1")]
5153 pub template: ::core::option::Option<Template>,
5154}
5155#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5157pub struct ListTemplatesRequest {
5158 #[prost(message, optional, tag="1")]
5160 pub pagination: ::core::option::Option<Pagination>,
5161 #[prost(enumeration="TemplateType", tag="2")]
5163 pub r#type: i32,
5164}
5165#[derive(Clone, PartialEq, ::prost::Message)]
5167pub struct ListTemplatesResponse {
5168 #[prost(message, repeated, tag="1")]
5170 pub templates: ::prost::alloc::vec::Vec<Template>,
5171 #[prost(message, optional, tag="2")]
5173 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5174}
5175#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5177pub struct CreateTemplateTranslationRequest {
5178 #[prost(string, tag="1")]
5180 pub template_id: ::prost::alloc::string::String,
5181 #[prost(int32, tag="2")]
5183 pub version: i32,
5184 #[prost(string, tag="3")]
5186 pub locale: ::prost::alloc::string::String,
5187 #[prost(string, tag="4")]
5189 pub title: ::prost::alloc::string::String,
5190 #[prost(string, tag="5")]
5192 pub body: ::prost::alloc::string::String,
5193 #[prost(string, tag="6")]
5195 pub translated_by: ::prost::alloc::string::String,
5196 #[prost(enumeration="TranslationStatus", tag="7")]
5198 pub status: i32,
5199}
5200#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5202pub struct CreateTemplateTranslationResponse {
5203 #[prost(message, optional, tag="1")]
5205 pub translation: ::core::option::Option<TemplateTranslation>,
5206}
5207#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5209pub struct UpdateTemplateTranslationRequest {
5210 #[prost(string, tag="1")]
5212 pub translation_id: ::prost::alloc::string::String,
5213 #[prost(string, tag="2")]
5215 pub title: ::prost::alloc::string::String,
5216 #[prost(string, tag="3")]
5218 pub body: ::prost::alloc::string::String,
5219 #[prost(enumeration="TranslationStatus", tag="4")]
5221 pub status: i32,
5222}
5223#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5225pub struct UpdateTemplateTranslationResponse {
5226 #[prost(message, optional, tag="1")]
5228 pub translation: ::core::option::Option<TemplateTranslation>,
5229}
5230#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5232pub struct ListTemplateTranslationsRequest {
5233 #[prost(string, tag="1")]
5235 pub template_id: ::prost::alloc::string::String,
5236 #[prost(int32, tag="2")]
5238 pub version: i32,
5239}
5240#[derive(Clone, PartialEq, ::prost::Message)]
5242pub struct ListTemplateTranslationsResponse {
5243 #[prost(message, repeated, tag="1")]
5245 pub translations: ::prost::alloc::vec::Vec<TemplateTranslation>,
5246}
5247#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5249pub struct ApproveTemplateTranslationRequest {
5250 #[prost(string, tag="1")]
5252 pub translation_id: ::prost::alloc::string::String,
5253}
5254#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5256pub struct ApproveTemplateTranslationResponse {
5257 #[prost(message, optional, tag="1")]
5259 pub translation: ::core::option::Option<TemplateTranslation>,
5260}
5261#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5265#[repr(i32)]
5266pub enum TemplateType {
5267 Unspecified = 0,
5269 Markdown = 1,
5271 Rich = 2,
5273 Html = 3,
5275}
5276impl TemplateType {
5277 pub fn as_str_name(&self) -> &'static str {
5282 match self {
5283 Self::Unspecified => "TEMPLATE_TYPE_UNSPECIFIED",
5284 Self::Markdown => "TEMPLATE_TYPE_MARKDOWN",
5285 Self::Rich => "TEMPLATE_TYPE_RICH",
5286 Self::Html => "TEMPLATE_TYPE_HTML",
5287 }
5288 }
5289 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5291 match value {
5292 "TEMPLATE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
5293 "TEMPLATE_TYPE_MARKDOWN" => Some(Self::Markdown),
5294 "TEMPLATE_TYPE_RICH" => Some(Self::Rich),
5295 "TEMPLATE_TYPE_HTML" => Some(Self::Html),
5296 _ => None,
5297 }
5298 }
5299}
5300#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5302#[repr(i32)]
5303pub enum TemplateVariableSource {
5304 Unspecified = 0,
5306 Profile = 1,
5308 Custom = 2,
5310}
5311impl TemplateVariableSource {
5312 pub fn as_str_name(&self) -> &'static str {
5317 match self {
5318 Self::Unspecified => "TEMPLATE_VARIABLE_SOURCE_UNSPECIFIED",
5319 Self::Profile => "TEMPLATE_VARIABLE_SOURCE_PROFILE",
5320 Self::Custom => "TEMPLATE_VARIABLE_SOURCE_CUSTOM",
5321 }
5322 }
5323 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5325 match value {
5326 "TEMPLATE_VARIABLE_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
5327 "TEMPLATE_VARIABLE_SOURCE_PROFILE" => Some(Self::Profile),
5328 "TEMPLATE_VARIABLE_SOURCE_CUSTOM" => Some(Self::Custom),
5329 _ => None,
5330 }
5331 }
5332}
5333#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5335#[repr(i32)]
5336pub enum TranslationStatus {
5337 Unspecified = 0,
5338 Draft = 1,
5340 AiTranslated = 2,
5342 InReview = 3,
5344 Approved = 4,
5346}
5347impl TranslationStatus {
5348 pub fn as_str_name(&self) -> &'static str {
5353 match self {
5354 Self::Unspecified => "TRANSLATION_STATUS_UNSPECIFIED",
5355 Self::Draft => "TRANSLATION_STATUS_DRAFT",
5356 Self::AiTranslated => "TRANSLATION_STATUS_AI_TRANSLATED",
5357 Self::InReview => "TRANSLATION_STATUS_IN_REVIEW",
5358 Self::Approved => "TRANSLATION_STATUS_APPROVED",
5359 }
5360 }
5361 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5363 match value {
5364 "TRANSLATION_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
5365 "TRANSLATION_STATUS_DRAFT" => Some(Self::Draft),
5366 "TRANSLATION_STATUS_AI_TRANSLATED" => Some(Self::AiTranslated),
5367 "TRANSLATION_STATUS_IN_REVIEW" => Some(Self::InReview),
5368 "TRANSLATION_STATUS_APPROVED" => Some(Self::Approved),
5369 _ => None,
5370 }
5371 }
5372}
5373include!("pidgr.v1.tonic.rs");
5374