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)]
2068pub struct ChannelEvent {
2069 #[prost(string, tag="1")]
2070 pub org_id: ::prost::alloc::string::String,
2071 #[prost(string, tag="2")]
2072 pub campaign_id: ::prost::alloc::string::String,
2073 #[prost(string, tag="3")]
2074 pub recipient_user_id: ::prost::alloc::string::String,
2075 #[prost(enumeration="ChannelName", tag="4")]
2076 pub channel: i32,
2077 #[prost(enumeration="ChannelStepKind", tag="5")]
2078 pub step_kind: i32,
2079 #[prost(enumeration="ChannelEventStatus", tag="6")]
2080 pub status: i32,
2081 #[prost(enumeration="ChannelSkipReason", tag="7")]
2083 pub skip_reason: i32,
2084 #[prost(string, tag="8")]
2086 pub provider_message_id: ::prost::alloc::string::String,
2087 #[prost(int64, tag="9")]
2090 pub cost_micros: i64,
2091 #[prost(string, tag="10")]
2094 pub metadata_json: ::prost::alloc::string::String,
2095 #[prost(message, optional, tag="11")]
2096 pub occurred_at: ::core::option::Option<::prost_types::Timestamp>,
2097}
2098#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2099pub struct RecordChannelEventRequest {
2100 #[prost(message, optional, tag="1")]
2101 pub event: ::core::option::Option<ChannelEvent>,
2102}
2103#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2104pub struct RecordChannelEventResponse {
2105 #[prost(bool, tag="1")]
2108 pub accepted: bool,
2109 #[prost(string, tag="2")]
2112 pub reason: ::prost::alloc::string::String,
2113}
2114#[derive(Clone, PartialEq, ::prost::Message)]
2115pub struct RecordChannelEventBatchRequest {
2116 #[prost(message, repeated, tag="1")]
2117 pub events: ::prost::alloc::vec::Vec<ChannelEvent>,
2118}
2119#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2121pub struct RecordChannelEventBatchResult {
2122 #[prost(bool, tag="1")]
2123 pub accepted: bool,
2124 #[prost(string, tag="2")]
2125 pub reason: ::prost::alloc::string::String,
2126}
2127#[derive(Clone, PartialEq, ::prost::Message)]
2128pub struct RecordChannelEventBatchResponse {
2129 #[prost(message, repeated, tag="1")]
2130 pub results: ::prost::alloc::vec::Vec<RecordChannelEventBatchResult>,
2131}
2132#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2141#[repr(i32)]
2142pub enum ChannelName {
2143 Unspecified = 0,
2144 Email = 1,
2145 Webhook = 2,
2146 Telegram = 3,
2147 Slack = 4,
2148 Sms = 5,
2149 Whatsapp = 6,
2150 MicrosoftTeams = 7,
2151 Line = 8,
2152}
2153impl ChannelName {
2154 pub fn as_str_name(&self) -> &'static str {
2159 match self {
2160 Self::Unspecified => "CHANNEL_NAME_UNSPECIFIED",
2161 Self::Email => "CHANNEL_NAME_EMAIL",
2162 Self::Webhook => "CHANNEL_NAME_WEBHOOK",
2163 Self::Telegram => "CHANNEL_NAME_TELEGRAM",
2164 Self::Slack => "CHANNEL_NAME_SLACK",
2165 Self::Sms => "CHANNEL_NAME_SMS",
2166 Self::Whatsapp => "CHANNEL_NAME_WHATSAPP",
2167 Self::MicrosoftTeams => "CHANNEL_NAME_MICROSOFT_TEAMS",
2168 Self::Line => "CHANNEL_NAME_LINE",
2169 }
2170 }
2171 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2173 match value {
2174 "CHANNEL_NAME_UNSPECIFIED" => Some(Self::Unspecified),
2175 "CHANNEL_NAME_EMAIL" => Some(Self::Email),
2176 "CHANNEL_NAME_WEBHOOK" => Some(Self::Webhook),
2177 "CHANNEL_NAME_TELEGRAM" => Some(Self::Telegram),
2178 "CHANNEL_NAME_SLACK" => Some(Self::Slack),
2179 "CHANNEL_NAME_SMS" => Some(Self::Sms),
2180 "CHANNEL_NAME_WHATSAPP" => Some(Self::Whatsapp),
2181 "CHANNEL_NAME_MICROSOFT_TEAMS" => Some(Self::MicrosoftTeams),
2182 "CHANNEL_NAME_LINE" => Some(Self::Line),
2183 _ => None,
2184 }
2185 }
2186}
2187#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2191#[repr(i32)]
2192pub enum ChannelStepKind {
2193 Unspecified = 0,
2194 Reminder = 1,
2195 Escalation = 2,
2196}
2197impl ChannelStepKind {
2198 pub fn as_str_name(&self) -> &'static str {
2203 match self {
2204 Self::Unspecified => "CHANNEL_STEP_KIND_UNSPECIFIED",
2205 Self::Reminder => "CHANNEL_STEP_KIND_REMINDER",
2206 Self::Escalation => "CHANNEL_STEP_KIND_ESCALATION",
2207 }
2208 }
2209 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2211 match value {
2212 "CHANNEL_STEP_KIND_UNSPECIFIED" => Some(Self::Unspecified),
2213 "CHANNEL_STEP_KIND_REMINDER" => Some(Self::Reminder),
2214 "CHANNEL_STEP_KIND_ESCALATION" => Some(Self::Escalation),
2215 _ => None,
2216 }
2217 }
2218}
2219#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2223#[repr(i32)]
2224pub enum ChannelEventStatus {
2225 Unspecified = 0,
2226 Sent = 1,
2227 Delivered = 2,
2228 Opened = 3,
2229 Clicked = 4,
2230 Bounced = 5,
2231 Failed = 6,
2232 Skipped = 7,
2233}
2234impl ChannelEventStatus {
2235 pub fn as_str_name(&self) -> &'static str {
2240 match self {
2241 Self::Unspecified => "CHANNEL_EVENT_STATUS_UNSPECIFIED",
2242 Self::Sent => "CHANNEL_EVENT_STATUS_SENT",
2243 Self::Delivered => "CHANNEL_EVENT_STATUS_DELIVERED",
2244 Self::Opened => "CHANNEL_EVENT_STATUS_OPENED",
2245 Self::Clicked => "CHANNEL_EVENT_STATUS_CLICKED",
2246 Self::Bounced => "CHANNEL_EVENT_STATUS_BOUNCED",
2247 Self::Failed => "CHANNEL_EVENT_STATUS_FAILED",
2248 Self::Skipped => "CHANNEL_EVENT_STATUS_SKIPPED",
2249 }
2250 }
2251 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2253 match value {
2254 "CHANNEL_EVENT_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
2255 "CHANNEL_EVENT_STATUS_SENT" => Some(Self::Sent),
2256 "CHANNEL_EVENT_STATUS_DELIVERED" => Some(Self::Delivered),
2257 "CHANNEL_EVENT_STATUS_OPENED" => Some(Self::Opened),
2258 "CHANNEL_EVENT_STATUS_CLICKED" => Some(Self::Clicked),
2259 "CHANNEL_EVENT_STATUS_BOUNCED" => Some(Self::Bounced),
2260 "CHANNEL_EVENT_STATUS_FAILED" => Some(Self::Failed),
2261 "CHANNEL_EVENT_STATUS_SKIPPED" => Some(Self::Skipped),
2262 _ => None,
2263 }
2264 }
2265}
2266#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2269#[repr(i32)]
2270pub enum ChannelSkipReason {
2271 Unspecified = 0,
2272 OptedOut = 1,
2273 RegionBlocked = 2,
2274 CostCapExceeded = 3,
2275 NoIdentifier = 4,
2276}
2277impl ChannelSkipReason {
2278 pub fn as_str_name(&self) -> &'static str {
2283 match self {
2284 Self::Unspecified => "CHANNEL_SKIP_REASON_UNSPECIFIED",
2285 Self::OptedOut => "CHANNEL_SKIP_REASON_OPTED_OUT",
2286 Self::RegionBlocked => "CHANNEL_SKIP_REASON_REGION_BLOCKED",
2287 Self::CostCapExceeded => "CHANNEL_SKIP_REASON_COST_CAP_EXCEEDED",
2288 Self::NoIdentifier => "CHANNEL_SKIP_REASON_NO_IDENTIFIER",
2289 }
2290 }
2291 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2293 match value {
2294 "CHANNEL_SKIP_REASON_UNSPECIFIED" => Some(Self::Unspecified),
2295 "CHANNEL_SKIP_REASON_OPTED_OUT" => Some(Self::OptedOut),
2296 "CHANNEL_SKIP_REASON_REGION_BLOCKED" => Some(Self::RegionBlocked),
2297 "CHANNEL_SKIP_REASON_COST_CAP_EXCEEDED" => Some(Self::CostCapExceeded),
2298 "CHANNEL_SKIP_REASON_NO_IDENTIFIER" => Some(Self::NoIdentifier),
2299 _ => None,
2300 }
2301 }
2302}
2303#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2308pub struct Device {
2309 #[prost(string, tag="1")]
2312 pub device_id: ::prost::alloc::string::String,
2313 #[prost(string, tag="2")]
2316 pub user_id: ::prost::alloc::string::String,
2317 #[prost(enumeration="Platform", tag="3")]
2319 pub platform: i32,
2320 #[prost(string, tag="4")]
2322 pub push_token: ::prost::alloc::string::String,
2323 #[prost(bool, tag="5")]
2325 pub active: bool,
2326 #[prost(message, optional, tag="6")]
2328 pub last_seen: ::core::option::Option<::prost_types::Timestamp>,
2329 #[prost(message, optional, tag="7")]
2331 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2332}
2333#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2335pub struct DeviceSummary {
2336 #[prost(string, tag="1")]
2338 pub device_id: ::prost::alloc::string::String,
2339 #[prost(string, tag="2")]
2341 pub user_id: ::prost::alloc::string::String,
2342 #[prost(enumeration="Platform", tag="3")]
2344 pub platform: i32,
2345 #[prost(bool, tag="4")]
2347 pub active: bool,
2348 #[prost(message, optional, tag="5")]
2350 pub last_seen: ::core::option::Option<::prost_types::Timestamp>,
2351 #[prost(message, optional, tag="6")]
2353 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2354}
2355#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2357pub struct RegisterRequest {
2358 #[prost(string, tag="1")]
2361 pub device_id: ::prost::alloc::string::String,
2362 #[prost(enumeration="Platform", tag="2")]
2364 pub platform: i32,
2365 #[prost(string, tag="3")]
2368 pub push_token: ::prost::alloc::string::String,
2369}
2370#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2372pub struct RegisterResponse {
2373 #[prost(message, optional, tag="1")]
2375 pub device: ::core::option::Option<DeviceSummary>,
2376}
2377#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2379pub struct DeactivateRequest {
2380 #[prost(string, tag="1")]
2383 pub device_id: ::prost::alloc::string::String,
2384}
2385#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2387pub struct DeactivateResponse {
2388 #[prost(bool, tag="1")]
2390 pub success: bool,
2391}
2392#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2394pub struct ListDevicesRequest {
2395}
2396#[derive(Clone, PartialEq, ::prost::Message)]
2398pub struct ListDevicesResponse {
2399 #[prost(message, repeated, tag="1")]
2401 pub devices: ::prost::alloc::vec::Vec<DeviceSummary>,
2402}
2403#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2405pub struct ListMemberDevicesRequest {
2406 #[prost(string, tag="1")]
2409 pub user_id: ::prost::alloc::string::String,
2410}
2411#[derive(Clone, PartialEq, ::prost::Message)]
2413pub struct ListMemberDevicesResponse {
2414 #[prost(message, repeated, tag="1")]
2416 pub devices: ::prost::alloc::vec::Vec<DeviceSummary>,
2417}
2418#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2423pub struct UserSettings {
2424 #[prost(enumeration="ThemePreference", tag="1")]
2426 pub theme_preference: i32,
2427 #[prost(string, tag="2")]
2431 pub preferred_locale: ::prost::alloc::string::String,
2432}
2433#[derive(Clone, PartialEq, ::prost::Message)]
2436pub struct UserProfile {
2437 #[prost(string, tag="1")]
2440 pub first_name: ::prost::alloc::string::String,
2441 #[prost(string, tag="2")]
2444 pub last_name: ::prost::alloc::string::String,
2445 #[prost(string, tag="3")]
2448 pub department: ::prost::alloc::string::String,
2449 #[prost(string, tag="4")]
2452 pub title: ::prost::alloc::string::String,
2453 #[prost(string, tag="5")]
2456 pub phone: ::prost::alloc::string::String,
2457 #[prost(string, tag="6")]
2460 pub location: ::prost::alloc::string::String,
2461 #[prost(string, tag="7")]
2464 pub employee_id: ::prost::alloc::string::String,
2465 #[prost(string, tag="8")]
2468 pub manager_name: ::prost::alloc::string::String,
2469 #[prost(string, tag="9")]
2472 pub start_date: ::prost::alloc::string::String,
2473 #[prost(map="string, string", tag="10")]
2476 pub custom_attributes: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
2477 #[prost(string, tag="11")]
2481 pub manager_id: ::prost::alloc::string::String,
2482}
2483#[derive(Clone, PartialEq, ::prost::Message)]
2485pub struct User {
2486 #[prost(string, tag="1")]
2488 pub id: ::prost::alloc::string::String,
2489 #[prost(string, tag="2")]
2492 pub email: ::prost::alloc::string::String,
2493 #[prost(string, tag="3")]
2496 pub name: ::prost::alloc::string::String,
2497 #[prost(enumeration="UserStatus", tag="5")]
2499 pub status: i32,
2500 #[prost(message, optional, tag="6")]
2502 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2503 #[prost(message, optional, tag="7")]
2505 pub role: ::core::option::Option<Role>,
2506 #[prost(string, tag="8")]
2508 pub role_id: ::prost::alloc::string::String,
2509 #[prost(message, optional, tag="9")]
2512 pub profile: ::core::option::Option<UserProfile>,
2513 #[prost(bool, tag="10")]
2516 pub processing_restricted: bool,
2517 #[prost(string, tag="11")]
2520 pub data_governance_region: ::prost::alloc::string::String,
2521}
2522#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2526#[repr(i32)]
2527pub enum UserStatus {
2528 Unspecified = 0,
2530 Invited = 1,
2532 Active = 2,
2534 Deactivated = 3,
2536}
2537impl UserStatus {
2538 pub fn as_str_name(&self) -> &'static str {
2543 match self {
2544 Self::Unspecified => "USER_STATUS_UNSPECIFIED",
2545 Self::Invited => "USER_STATUS_INVITED",
2546 Self::Active => "USER_STATUS_ACTIVE",
2547 Self::Deactivated => "USER_STATUS_DEACTIVATED",
2548 }
2549 }
2550 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2552 match value {
2553 "USER_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
2554 "USER_STATUS_INVITED" => Some(Self::Invited),
2555 "USER_STATUS_ACTIVE" => Some(Self::Active),
2556 "USER_STATUS_DEACTIVATED" => Some(Self::Deactivated),
2557 _ => None,
2558 }
2559 }
2560}
2561#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2563#[repr(i32)]
2564pub enum ThemePreference {
2565 Unspecified = 0,
2567 Light = 1,
2569 Dark = 2,
2571 System = 3,
2573}
2574impl ThemePreference {
2575 pub fn as_str_name(&self) -> &'static str {
2580 match self {
2581 Self::Unspecified => "THEME_PREFERENCE_UNSPECIFIED",
2582 Self::Light => "THEME_PREFERENCE_LIGHT",
2583 Self::Dark => "THEME_PREFERENCE_DARK",
2584 Self::System => "THEME_PREFERENCE_SYSTEM",
2585 }
2586 }
2587 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2589 match value {
2590 "THEME_PREFERENCE_UNSPECIFIED" => Some(Self::Unspecified),
2591 "THEME_PREFERENCE_LIGHT" => Some(Self::Light),
2592 "THEME_PREFERENCE_DARK" => Some(Self::Dark),
2593 "THEME_PREFERENCE_SYSTEM" => Some(Self::System),
2594 _ => None,
2595 }
2596 }
2597}
2598#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2603pub struct Group {
2604 #[prost(string, tag="1")]
2606 pub id: ::prost::alloc::string::String,
2607 #[prost(string, tag="2")]
2610 pub name: ::prost::alloc::string::String,
2611 #[prost(string, tag="3")]
2614 pub description: ::prost::alloc::string::String,
2615 #[prost(int32, tag="4")]
2617 pub member_count: i32,
2618 #[prost(message, optional, tag="5")]
2620 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
2621 #[prost(message, optional, tag="6")]
2623 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
2624 #[prost(bool, tag="7")]
2626 pub is_default: bool,
2627 #[prost(string, tag="8")]
2629 pub created_by: ::prost::alloc::string::String,
2630}
2631#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2633pub struct CreateGroupRequest {
2634 #[prost(string, tag="1")]
2637 pub name: ::prost::alloc::string::String,
2638 #[prost(string, tag="2")]
2641 pub description: ::prost::alloc::string::String,
2642}
2643#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2645pub struct CreateGroupResponse {
2646 #[prost(message, optional, tag="1")]
2648 pub group: ::core::option::Option<Group>,
2649}
2650#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2652pub struct GetGroupRequest {
2653 #[prost(string, tag="1")]
2655 pub group_id: ::prost::alloc::string::String,
2656}
2657#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2659pub struct GetGroupResponse {
2660 #[prost(message, optional, tag="1")]
2662 pub group: ::core::option::Option<Group>,
2663}
2664#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2666pub struct ListGroupsRequest {
2667 #[prost(message, optional, tag="1")]
2669 pub pagination: ::core::option::Option<Pagination>,
2670}
2671#[derive(Clone, PartialEq, ::prost::Message)]
2673pub struct ListGroupsResponse {
2674 #[prost(message, repeated, tag="1")]
2676 pub groups: ::prost::alloc::vec::Vec<Group>,
2677 #[prost(message, optional, tag="2")]
2679 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2680}
2681#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2683pub struct UpdateGroupRequest {
2684 #[prost(string, tag="1")]
2686 pub group_id: ::prost::alloc::string::String,
2687 #[prost(string, tag="2")]
2691 pub name: ::prost::alloc::string::String,
2692 #[prost(string, tag="3")]
2695 pub description: ::prost::alloc::string::String,
2696}
2697#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2699pub struct UpdateGroupResponse {
2700 #[prost(message, optional, tag="1")]
2702 pub group: ::core::option::Option<Group>,
2703}
2704#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2706pub struct DeleteGroupRequest {
2707 #[prost(string, tag="1")]
2710 pub group_id: ::prost::alloc::string::String,
2711}
2712#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2714pub struct DeleteGroupResponse {
2715}
2716#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2718pub struct AddGroupMembersRequest {
2719 #[prost(string, tag="1")]
2721 pub group_id: ::prost::alloc::string::String,
2722 #[prost(string, repeated, tag="2")]
2726 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2727}
2728#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2730pub struct AddGroupMembersResponse {
2731 #[prost(message, optional, tag="1")]
2733 pub group: ::core::option::Option<Group>,
2734}
2735#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2737pub struct RemoveGroupMembersRequest {
2738 #[prost(string, tag="1")]
2740 pub group_id: ::prost::alloc::string::String,
2741 #[prost(string, repeated, tag="2")]
2744 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2745}
2746#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2748pub struct RemoveGroupMembersResponse {
2749 #[prost(message, optional, tag="1")]
2751 pub group: ::core::option::Option<Group>,
2752}
2753#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2755pub struct ListGroupMembersRequest {
2756 #[prost(string, tag="1")]
2758 pub group_id: ::prost::alloc::string::String,
2759 #[prost(message, optional, tag="2")]
2761 pub pagination: ::core::option::Option<Pagination>,
2762}
2763#[derive(Clone, PartialEq, ::prost::Message)]
2765pub struct ListGroupMembersResponse {
2766 #[prost(message, repeated, tag="1")]
2768 pub users: ::prost::alloc::vec::Vec<User>,
2769 #[prost(message, optional, tag="2")]
2771 pub pagination_meta: ::core::option::Option<PaginationMeta>,
2772}
2773#[derive(Clone, PartialEq, ::prost::Message)]
2775pub struct UserGroupMembership {
2776 #[prost(string, tag="1")]
2778 pub user_id: ::prost::alloc::string::String,
2779 #[prost(message, repeated, tag="2")]
2781 pub groups: ::prost::alloc::vec::Vec<Group>,
2782}
2783#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2785pub struct GetUserGroupMembershipsRequest {
2786 #[prost(string, repeated, tag="1")]
2789 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2790}
2791#[derive(Clone, PartialEq, ::prost::Message)]
2793pub struct GetUserGroupMembershipsResponse {
2794 #[prost(message, repeated, tag="1")]
2796 pub memberships: ::prost::alloc::vec::Vec<UserGroupMembership>,
2797}
2798#[derive(Clone, PartialEq, ::prost::Message)]
2802pub struct TouchEvent {
2803 #[prost(string, tag="1")]
2806 pub screen_name: ::prost::alloc::string::String,
2807 #[prost(float, tag="2")]
2810 pub x_pct: f32,
2811 #[prost(float, tag="3")]
2814 pub y_pct: f32,
2815 #[prost(enumeration="TouchEventType", tag="4")]
2817 pub event_type: i32,
2818 #[prost(int32, tag="5")]
2820 pub screen_width: i32,
2821 #[prost(int32, tag="6")]
2823 pub screen_height: i32,
2824 #[prost(message, optional, tag="7")]
2826 pub client_timestamp: ::core::option::Option<::prost_types::Timestamp>,
2827 #[prost(string, tag="8")]
2830 pub campaign_id: ::prost::alloc::string::String,
2831}
2832#[derive(Clone, PartialEq, ::prost::Message)]
2834pub struct IngestTouchEventsRequest {
2835 #[prost(message, repeated, tag="1")]
2838 pub events: ::prost::alloc::vec::Vec<TouchEvent>,
2839}
2840#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2842pub struct IngestTouchEventsResponse {
2843 #[prost(int32, tag="1")]
2845 pub ingested_count: i32,
2846}
2847#[derive(Clone, Copy, PartialEq, ::prost::Message)]
2849pub struct HeatmapDataPoint {
2850 #[prost(float, tag="1")]
2852 pub x_pct: f32,
2853 #[prost(float, tag="2")]
2855 pub y_pct: f32,
2856 #[prost(float, tag="3")]
2858 pub value: f32,
2859}
2860#[derive(Clone, PartialEq, ::prost::Message)]
2862pub struct QueryHeatmapDataRequest {
2863 #[prost(string, tag="1")]
2866 pub screen_name: ::prost::alloc::string::String,
2867 #[prost(message, optional, tag="2")]
2869 pub date_from: ::core::option::Option<::prost_types::Timestamp>,
2870 #[prost(message, optional, tag="3")]
2872 pub date_to: ::core::option::Option<::prost_types::Timestamp>,
2873 #[prost(string, tag="4")]
2876 pub campaign_id: ::prost::alloc::string::String,
2877 #[prost(float, tag="6")]
2880 pub grid_resolution: f32,
2881 #[prost(enumeration="HeatmapMode", tag="7")]
2883 pub mode: i32,
2884 #[prost(enumeration="TouchEventType", repeated, tag="8")]
2886 pub event_types: ::prost::alloc::vec::Vec<i32>,
2887}
2888#[derive(Clone, PartialEq, ::prost::Message)]
2890pub struct QueryHeatmapDataResponse {
2891 #[prost(message, repeated, tag="1")]
2893 pub data_points: ::prost::alloc::vec::Vec<HeatmapDataPoint>,
2894 #[prost(string, tag="3")]
2897 pub screenshot_url: ::prost::alloc::string::String,
2898 #[prost(bool, tag="4")]
2900 pub cohort_enabled: bool,
2901}
2902#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2904pub struct UploadScreenshotRequest {
2905 #[prost(string, tag="1")]
2908 pub screen_name: ::prost::alloc::string::String,
2909 #[prost(string, tag="2")]
2911 pub app_version: ::prost::alloc::string::String,
2912 #[prost(bytes="vec", tag="3")]
2915 pub image_data: ::prost::alloc::vec::Vec<u8>,
2916}
2917#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2919pub struct UploadScreenshotResponse {
2920 #[prost(string, tag="1")]
2922 pub url: ::prost::alloc::string::String,
2923}
2924#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2926pub struct ScreenScreenshot {
2927 #[prost(string, tag="1")]
2929 pub screen_name: ::prost::alloc::string::String,
2930 #[prost(string, tag="2")]
2932 pub url: ::prost::alloc::string::String,
2933 #[prost(string, tag="3")]
2935 pub app_version: ::prost::alloc::string::String,
2936}
2937#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2939pub struct ListScreenshotsRequest {
2940}
2941#[derive(Clone, PartialEq, ::prost::Message)]
2943pub struct ListScreenshotsResponse {
2944 #[prost(message, repeated, tag="1")]
2946 pub screenshots: ::prost::alloc::vec::Vec<ScreenScreenshot>,
2947}
2948#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2952#[repr(i32)]
2953pub enum TouchEventType {
2954 Unspecified = 0,
2956 Tap = 1,
2958 LongPress = 2,
2960 Scroll = 3,
2962 ActionClick = 4,
2964}
2965impl TouchEventType {
2966 pub fn as_str_name(&self) -> &'static str {
2971 match self {
2972 Self::Unspecified => "TOUCH_EVENT_TYPE_UNSPECIFIED",
2973 Self::Tap => "TOUCH_EVENT_TYPE_TAP",
2974 Self::LongPress => "TOUCH_EVENT_TYPE_LONG_PRESS",
2975 Self::Scroll => "TOUCH_EVENT_TYPE_SCROLL",
2976 Self::ActionClick => "TOUCH_EVENT_TYPE_ACTION_CLICK",
2977 }
2978 }
2979 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2981 match value {
2982 "TOUCH_EVENT_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
2983 "TOUCH_EVENT_TYPE_TAP" => Some(Self::Tap),
2984 "TOUCH_EVENT_TYPE_LONG_PRESS" => Some(Self::LongPress),
2985 "TOUCH_EVENT_TYPE_SCROLL" => Some(Self::Scroll),
2986 "TOUCH_EVENT_TYPE_ACTION_CLICK" => Some(Self::ActionClick),
2987 _ => None,
2988 }
2989 }
2990}
2991#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2993#[repr(i32)]
2994pub enum HeatmapMode {
2995 Unspecified = 0,
2997 Total = 1,
2999 Median = 2,
3001}
3002impl HeatmapMode {
3003 pub fn as_str_name(&self) -> &'static str {
3008 match self {
3009 Self::Unspecified => "HEATMAP_MODE_UNSPECIFIED",
3010 Self::Total => "HEATMAP_MODE_TOTAL",
3011 Self::Median => "HEATMAP_MODE_MEDIAN",
3012 }
3013 }
3014 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3016 match value {
3017 "HEATMAP_MODE_UNSPECIFIED" => Some(Self::Unspecified),
3018 "HEATMAP_MODE_TOTAL" => Some(Self::Total),
3019 "HEATMAP_MODE_MEDIAN" => Some(Self::Median),
3020 _ => None,
3021 }
3022 }
3023}
3024#[derive(Clone, PartialEq, ::prost::Message)]
3028pub struct InboxEntry {
3029 #[prost(string, tag="1")]
3032 pub delivery_id: ::prost::alloc::string::String,
3033 #[prost(message, optional, tag="2")]
3035 pub message: ::core::option::Option<Message>,
3036 #[prost(enumeration="DeliveryStatus", tag="3")]
3038 pub status: i32,
3039 #[prost(bool, tag="4")]
3041 pub read: bool,
3042 #[prost(message, optional, tag="5")]
3044 pub received_at: ::core::option::Option<::prost_types::Timestamp>,
3045 #[prost(enumeration="delivery::Kind", tag="6")]
3049 pub kind: i32,
3050 #[prost(string, tag="7")]
3053 pub parent_delivery_id: ::prost::alloc::string::String,
3054 #[prost(string, tag="8")]
3057 pub rendered_locale: ::prost::alloc::string::String,
3058}
3059#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3061pub struct SyncRequest {
3062 #[prost(message, optional, tag="1")]
3064 pub since: ::core::option::Option<::prost_types::Timestamp>,
3065 #[prost(int32, tag="2")]
3068 pub limit: i32,
3069}
3070#[derive(Clone, PartialEq, ::prost::Message)]
3072pub struct SyncResponse {
3073 #[prost(message, repeated, tag="1")]
3075 pub entries: ::prost::alloc::vec::Vec<InboxEntry>,
3076 #[prost(message, optional, tag="2")]
3078 pub next_since: ::core::option::Option<::prost_types::Timestamp>,
3079}
3080#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3082pub struct MarkReadRequest {
3083 #[prost(string, tag="1")]
3086 pub delivery_id: ::prost::alloc::string::String,
3087}
3088#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3090pub struct MarkReadResponse {
3091 #[prost(bool, tag="1")]
3093 pub success: bool,
3094}
3095#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3097pub struct GetMessageRequest {
3098 #[prost(string, tag="1")]
3101 pub delivery_id: ::prost::alloc::string::String,
3102}
3103#[derive(Clone, PartialEq, ::prost::Message)]
3105pub struct GetMessageResponse {
3106 #[prost(message, optional, tag="1")]
3108 pub entry: ::core::option::Option<InboxEntry>,
3109}
3110#[derive(Clone, PartialEq, ::prost::Message)]
3115pub struct Archetype {
3116 #[prost(string, tag="1")]
3118 pub label: ::prost::alloc::string::String,
3119 #[prost(string, tag="2")]
3121 pub description: ::prost::alloc::string::String,
3122 #[prost(float, tag="3")]
3124 pub percentage: f32,
3125 #[prost(map="string, double", tag="4")]
3132 pub feature_centroid: ::std::collections::HashMap<::prost::alloc::string::String, f64>,
3133 #[prost(map="string, message", tag="5")]
3138 pub feature_breakdown: ::std::collections::HashMap<::prost::alloc::string::String, DimensionStats>,
3139 #[prost(message, optional, tag="6")]
3143 pub tap_heatmap: ::core::option::Option<TapHeatmap>,
3144 #[prost(message, optional, tag="7")]
3148 pub forecast: ::core::option::Option<ArchetypeForecast>,
3149 #[prost(message, repeated, tag="8")]
3155 pub exemplar_sessions: ::prost::alloc::vec::Vec<ExemplarSession>,
3156 #[prost(message, optional, tag="9")]
3159 pub screen_dwell: ::core::option::Option<ScreenDwell>,
3160 #[prost(message, optional, tag="10")]
3164 pub response_timeline: ::core::option::Option<ResponseTimeline>,
3165}
3166#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3171pub struct DimensionStats {
3172 #[prost(double, tag="1")]
3174 pub centroid: f64,
3175 #[prost(double, tag="2")]
3177 pub p25: f64,
3178 #[prost(double, tag="3")]
3180 pub p50: f64,
3181 #[prost(double, tag="4")]
3183 pub p75: f64,
3184 #[prost(double, tag="5")]
3187 pub group_p50: f64,
3188}
3189#[derive(Clone, PartialEq, ::prost::Message)]
3193pub struct TapHeatmap {
3194 #[prost(int32, tag="1")]
3196 pub width: i32,
3197 #[prost(int32, tag="2")]
3199 pub height: i32,
3200 #[prost(double, repeated, tag="3")]
3203 pub values: ::prost::alloc::vec::Vec<f64>,
3204 #[prost(int32, tag="4")]
3207 pub session_count: i32,
3208 #[prost(message, repeated, tag="5")]
3212 pub layers: ::prost::alloc::vec::Vec<TapHeatmapLayer>,
3213}
3214#[derive(Clone, PartialEq, ::prost::Message)]
3216pub struct TapHeatmapLayer {
3217 #[prost(string, tag="1")]
3220 pub event_type: ::prost::alloc::string::String,
3221 #[prost(double, repeated, tag="2")]
3224 pub values: ::prost::alloc::vec::Vec<f64>,
3225}
3226#[derive(Clone, PartialEq, ::prost::Message)]
3228pub struct ArchetypeForecast {
3229 #[prost(message, repeated, tag="1")]
3232 pub horizons: ::prost::alloc::vec::Vec<ForecastHorizon>,
3233}
3234#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3236pub struct ForecastHorizon {
3237 #[prost(int32, tag="1")]
3239 pub days: i32,
3240 #[prost(double, tag="2")]
3243 pub predicted_share: f64,
3244 #[prost(double, tag="3")]
3246 pub lower: f64,
3247 #[prost(double, tag="4")]
3249 pub upper: f64,
3250 #[prost(enumeration="ConfidenceLevel", tag="5")]
3252 pub confidence: i32,
3253}
3254#[derive(Clone, PartialEq, ::prost::Message)]
3257pub struct ExemplarSession {
3258 #[prost(string, tag="1")]
3261 pub session_id: ::prost::alloc::string::String,
3262 #[prost(int32, tag="2")]
3265 pub rank: i32,
3266 #[prost(double, tag="3")]
3268 pub distance: f64,
3269 #[prost(int32, tag="4")]
3271 pub duration_seconds: i32,
3272 #[prost(string, tag="5")]
3276 pub platform: ::prost::alloc::string::String,
3277}
3278#[derive(Clone, PartialEq, ::prost::Message)]
3282pub struct ScreenDwell {
3283 #[prost(message, repeated, tag="1")]
3286 pub entries: ::prost::alloc::vec::Vec<ScreenDwellEntry>,
3287}
3288#[derive(Clone, PartialEq, ::prost::Message)]
3289pub struct ScreenDwellEntry {
3290 #[prost(string, tag="1")]
3294 pub screen_name: ::prost::alloc::string::String,
3295 #[prost(double, tag="2")]
3297 pub median_seconds: f64,
3298 #[prost(double, tag="3")]
3300 pub p75_seconds: f64,
3301 #[prost(int32, tag="4")]
3303 pub session_count: i32,
3304}
3305#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3309pub struct ResponseTimeline {
3310 #[prost(message, optional, tag="1")]
3312 pub read_after_delivered: ::core::option::Option<LatencyPercentiles>,
3313 #[prost(message, optional, tag="2")]
3316 pub ack_after_read: ::core::option::Option<LatencyPercentiles>,
3317 #[prost(message, optional, tag="3")]
3320 pub ack_after_delivered: ::core::option::Option<LatencyPercentiles>,
3321 #[prost(int32, tag="4")]
3323 pub delivery_count: i32,
3324}
3325#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3327pub struct LatencyPercentiles {
3328 #[prost(double, tag="1")]
3329 pub p50: f64,
3330 #[prost(double, tag="2")]
3331 pub p75: f64,
3332 #[prost(double, tag="3")]
3333 pub p95: f64,
3334}
3335#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3338pub struct CohortPrediction {
3339 #[prost(float, tag="1")]
3341 pub predicted_ack_rate: f32,
3342 #[prost(float, tag="2")]
3344 pub confidence_low: f32,
3345 #[prost(float, tag="3")]
3347 pub confidence_high: f32,
3348 #[prost(enumeration="ConfidenceLevel", tag="4")]
3350 pub confidence_level: i32,
3351 #[prost(int32, tag="5")]
3353 pub data_point_count: i32,
3354}
3355#[derive(Clone, PartialEq, ::prost::Message)]
3357pub struct CampaignAdvisory {
3358 #[prost(message, optional, tag="1")]
3360 pub predicted_ack: ::core::option::Option<CohortPrediction>,
3361 #[prost(int32, tag="2")]
3364 pub suggested_escalation_delay_minutes: i32,
3365 #[prost(message, repeated, tag="3")]
3367 pub archetypes: ::prost::alloc::vec::Vec<Archetype>,
3368}
3369#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3371pub struct GetGroupArchetypesRequest {
3372 #[prost(string, tag="1")]
3374 pub group_id: ::prost::alloc::string::String,
3375}
3376#[derive(Clone, PartialEq, ::prost::Message)]
3378pub struct GetGroupArchetypesResponse {
3379 #[prost(message, repeated, tag="1")]
3381 pub archetypes: ::prost::alloc::vec::Vec<Archetype>,
3382 #[prost(int32, tag="2")]
3384 pub data_point_count: i32,
3385 #[prost(enumeration="PipelineState", tag="3")]
3389 pub pipeline_state: i32,
3390}
3391#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3393pub struct PredictCampaignAckRequest {
3394 #[prost(string, tag="1")]
3396 pub group_id: ::prost::alloc::string::String,
3397 #[prost(string, tag="2")]
3399 pub template_type: ::prost::alloc::string::String,
3400 #[prost(int32, tag="3")]
3402 pub workflow_step_count: i32,
3403}
3404#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3406pub struct PredictCampaignAckResponse {
3407 #[prost(message, optional, tag="1")]
3409 pub prediction: ::core::option::Option<CohortPrediction>,
3410}
3411#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3413pub struct GetCampaignAdvisoryRequest {
3414 #[prost(string, tag="1")]
3416 pub group_id: ::prost::alloc::string::String,
3417 #[prost(string, tag="2")]
3419 pub template_id: ::prost::alloc::string::String,
3420 #[prost(int32, tag="3")]
3422 pub template_version: i32,
3423 #[prost(int32, tag="4")]
3425 pub workflow_step_count: i32,
3426}
3427#[derive(Clone, PartialEq, ::prost::Message)]
3429pub struct GetCampaignAdvisoryResponse {
3430 #[prost(message, optional, tag="1")]
3432 pub advisory: ::core::option::Option<CampaignAdvisory>,
3433}
3434#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3436pub struct GetInsightNarrativeRequest {
3437 #[prost(string, tag="1")]
3439 pub group_id: ::prost::alloc::string::String,
3440 #[prost(string, tag="2")]
3442 pub prompt_name: ::prost::alloc::string::String,
3443}
3444#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3446pub struct GetInsightNarrativeResponse {
3447 #[prost(string, tag="1")]
3449 pub narrative: ::prost::alloc::string::String,
3450 #[prost(message, optional, tag="2")]
3452 pub generated_at: ::core::option::Option<::prost_types::Timestamp>,
3453 #[prost(string, tag="3")]
3455 pub model_id: ::prost::alloc::string::String,
3456}
3457#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3460pub struct TriggerMlPipelineRequest {
3461}
3462#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3464pub struct TriggerMlPipelineResponse {
3465 #[prost(int32, tag="1")]
3467 pub remaining_this_month: i32,
3468 #[prost(message, optional, tag="2")]
3470 pub last_trained_at: ::core::option::Option<::prost_types::Timestamp>,
3471}
3472#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3476pub struct TriggerArchetypeClusteringRequest {
3477 #[prost(string, tag="1")]
3479 pub group_id: ::prost::alloc::string::String,
3480}
3481#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3483pub struct TriggerArchetypeClusteringResponse {
3484 #[prost(string, tag="1")]
3487 pub workflow_id: ::prost::alloc::string::String,
3488 #[prost(int32, tag="2")]
3491 pub remaining_this_month: i32,
3492 #[prost(message, optional, tag="3")]
3495 pub last_clustered_at: ::core::option::Option<::prost_types::Timestamp>,
3496}
3497#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3501pub struct GenerateCampaignBodyDraftRequest {
3502 #[prost(string, tag="1")]
3504 pub group_id: ::prost::alloc::string::String,
3505 #[prost(string, tag="2")]
3507 pub archetype_label: ::prost::alloc::string::String,
3508 #[prost(string, tag="3")]
3511 pub lane_action: ::prost::alloc::string::String,
3512}
3513#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3515pub struct GenerateCampaignBodyDraftResponse {
3516 #[prost(string, tag="1")]
3519 pub body_markdown: ::prost::alloc::string::String,
3520}
3521#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3525#[repr(i32)]
3526pub enum ConfidenceLevel {
3527 Unspecified = 0,
3528 Low = 1,
3530 Medium = 2,
3532 High = 3,
3534}
3535impl ConfidenceLevel {
3536 pub fn as_str_name(&self) -> &'static str {
3541 match self {
3542 Self::Unspecified => "CONFIDENCE_LEVEL_UNSPECIFIED",
3543 Self::Low => "CONFIDENCE_LEVEL_LOW",
3544 Self::Medium => "CONFIDENCE_LEVEL_MEDIUM",
3545 Self::High => "CONFIDENCE_LEVEL_HIGH",
3546 }
3547 }
3548 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3550 match value {
3551 "CONFIDENCE_LEVEL_UNSPECIFIED" => Some(Self::Unspecified),
3552 "CONFIDENCE_LEVEL_LOW" => Some(Self::Low),
3553 "CONFIDENCE_LEVEL_MEDIUM" => Some(Self::Medium),
3554 "CONFIDENCE_LEVEL_HIGH" => Some(Self::High),
3555 _ => None,
3556 }
3557 }
3558}
3559#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3565#[repr(i32)]
3566pub enum PipelineState {
3567 Unspecified = 0,
3568 NeverRun = 1,
3571 BelowThreshold = 2,
3575 NoClusters = 3,
3579 Ready = 4,
3581}
3582impl PipelineState {
3583 pub fn as_str_name(&self) -> &'static str {
3588 match self {
3589 Self::Unspecified => "PIPELINE_STATE_UNSPECIFIED",
3590 Self::NeverRun => "PIPELINE_STATE_NEVER_RUN",
3591 Self::BelowThreshold => "PIPELINE_STATE_BELOW_THRESHOLD",
3592 Self::NoClusters => "PIPELINE_STATE_NO_CLUSTERS",
3593 Self::Ready => "PIPELINE_STATE_READY",
3594 }
3595 }
3596 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3598 match value {
3599 "PIPELINE_STATE_UNSPECIFIED" => Some(Self::Unspecified),
3600 "PIPELINE_STATE_NEVER_RUN" => Some(Self::NeverRun),
3601 "PIPELINE_STATE_BELOW_THRESHOLD" => Some(Self::BelowThreshold),
3602 "PIPELINE_STATE_NO_CLUSTERS" => Some(Self::NoClusters),
3603 "PIPELINE_STATE_READY" => Some(Self::Ready),
3604 _ => None,
3605 }
3606 }
3607}
3608#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3613pub struct InviteLink {
3614 #[prost(string, tag="1")]
3616 pub id: ::prost::alloc::string::String,
3617 #[prost(string, tag="2")]
3619 pub token: ::prost::alloc::string::String,
3620 #[prost(string, tag="3")]
3622 pub role_id: ::prost::alloc::string::String,
3623 #[prost(int32, tag="4")]
3626 pub max_uses: i32,
3627 #[prost(int32, tag="5")]
3629 pub use_count: i32,
3630 #[prost(message, optional, tag="6")]
3632 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
3633 #[prost(message, optional, tag="7")]
3635 pub revoked_at: ::core::option::Option<::prost_types::Timestamp>,
3636 #[prost(string, tag="8")]
3638 pub created_by: ::prost::alloc::string::String,
3639 #[prost(message, optional, tag="9")]
3641 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
3642 #[prost(string, tag="10")]
3645 pub data_governance_region: ::prost::alloc::string::String,
3646}
3647#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3649pub struct CreateInviteLinkRequest {
3650 #[prost(string, tag="1")]
3652 pub role_id: ::prost::alloc::string::String,
3653 #[prost(int32, tag="2")]
3655 pub max_uses: i32,
3656 #[prost(int32, tag="3")]
3659 pub expires_in_hours: i32,
3660 #[prost(string, tag="4")]
3663 pub data_governance_region: ::prost::alloc::string::String,
3664}
3665#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3667pub struct CreateInviteLinkResponse {
3668 #[prost(message, optional, tag="1")]
3670 pub invite_link: ::core::option::Option<InviteLink>,
3671 #[prost(string, tag="2")]
3673 pub url: ::prost::alloc::string::String,
3674}
3675#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3677pub struct ListInviteLinksRequest {
3678}
3679#[derive(Clone, PartialEq, ::prost::Message)]
3681pub struct ListInviteLinksResponse {
3682 #[prost(message, repeated, tag="1")]
3684 pub invite_links: ::prost::alloc::vec::Vec<InviteLink>,
3685}
3686#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3688pub struct RevokeInviteLinkRequest {
3689 #[prost(string, tag="1")]
3691 pub invite_link_id: ::prost::alloc::string::String,
3692}
3693#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3695pub struct RevokeInviteLinkResponse {
3696}
3697#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3699pub struct RedeemInviteLinkRequest {
3700 #[prost(string, tag="1")]
3702 pub token: ::prost::alloc::string::String,
3703}
3704#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3706pub struct RedeemInviteLinkResponse {
3707 #[prost(string, tag="1")]
3709 pub organization_name: ::prost::alloc::string::String,
3710}
3711#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3713pub struct ValidateInviteLinkRequest {
3714 #[prost(string, tag="1")]
3716 pub token: ::prost::alloc::string::String,
3717 #[prost(string, tag="2")]
3720 pub email: ::prost::alloc::string::String,
3721}
3722#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3724pub struct ValidateInviteLinkResponse {
3725 #[prost(string, tag="1")]
3727 pub organization_name: ::prost::alloc::string::String,
3728}
3729#[derive(Clone, PartialEq, ::prost::Message)]
3733pub struct InviteUserRequest {
3734 #[prost(string, tag="1")]
3737 pub email: ::prost::alloc::string::String,
3738 #[prost(string, tag="2")]
3741 pub name: ::prost::alloc::string::String,
3742 #[prost(string, tag="4")]
3744 pub role_id: ::prost::alloc::string::String,
3745 #[prost(message, optional, tag="5")]
3747 pub profile: ::core::option::Option<UserProfile>,
3748 #[prost(string, tag="6")]
3751 pub data_governance_region: ::prost::alloc::string::String,
3752}
3753#[derive(Clone, PartialEq, ::prost::Message)]
3755pub struct InviteUserResponse {
3756 #[prost(message, optional, tag="1")]
3758 pub user: ::core::option::Option<User>,
3759}
3760#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3762pub struct GetUserRequest {
3763 #[prost(string, tag="1")]
3765 pub user_id: ::prost::alloc::string::String,
3766}
3767#[derive(Clone, PartialEq, ::prost::Message)]
3769pub struct GetUserResponse {
3770 #[prost(message, optional, tag="1")]
3772 pub user: ::core::option::Option<User>,
3773}
3774#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3776pub struct ListUsersRequest {
3777 #[prost(message, optional, tag="1")]
3779 pub pagination: ::core::option::Option<Pagination>,
3780}
3781#[derive(Clone, PartialEq, ::prost::Message)]
3783pub struct ListUsersResponse {
3784 #[prost(message, repeated, tag="1")]
3786 pub users: ::prost::alloc::vec::Vec<User>,
3787 #[prost(message, optional, tag="2")]
3789 pub pagination_meta: ::core::option::Option<PaginationMeta>,
3790}
3791#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3793pub struct UpdateUserRoleRequest {
3794 #[prost(string, tag="1")]
3796 pub user_id: ::prost::alloc::string::String,
3797 #[prost(string, tag="2")]
3799 pub role_id: ::prost::alloc::string::String,
3800}
3801#[derive(Clone, PartialEq, ::prost::Message)]
3803pub struct UpdateUserRoleResponse {
3804 #[prost(message, optional, tag="1")]
3806 pub user: ::core::option::Option<User>,
3807}
3808#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3810pub struct DeactivateUserRequest {
3811 #[prost(string, tag="1")]
3813 pub user_id: ::prost::alloc::string::String,
3814}
3815#[derive(Clone, PartialEq, ::prost::Message)]
3817pub struct DeactivateUserResponse {
3818 #[prost(message, optional, tag="1")]
3820 pub user: ::core::option::Option<User>,
3821}
3822#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3824pub struct ReactivateUserRequest {
3825 #[prost(string, tag="1")]
3827 pub user_id: ::prost::alloc::string::String,
3828}
3829#[derive(Clone, PartialEq, ::prost::Message)]
3831pub struct ReactivateUserResponse {
3832 #[prost(message, optional, tag="1")]
3834 pub user: ::core::option::Option<User>,
3835}
3836#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3838pub struct RevokeInviteRequest {
3839 #[prost(string, tag="1")]
3842 pub user_id: ::prost::alloc::string::String,
3843}
3844#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3846pub struct RevokeInviteResponse {
3847}
3848#[derive(Clone, PartialEq, ::prost::Message)]
3850pub struct UpdateUserProfileRequest {
3851 #[prost(string, tag="1")]
3854 pub user_id: ::prost::alloc::string::String,
3855 #[prost(message, optional, tag="2")]
3857 pub profile: ::core::option::Option<UserProfile>,
3858}
3859#[derive(Clone, PartialEq, ::prost::Message)]
3861pub struct UpdateUserProfileResponse {
3862 #[prost(message, optional, tag="1")]
3864 pub user: ::core::option::Option<User>,
3865}
3866#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3868pub struct GetUserSettingsRequest {
3869}
3870#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3872pub struct GetUserSettingsResponse {
3873 #[prost(message, optional, tag="1")]
3875 pub settings: ::core::option::Option<UserSettings>,
3876}
3877#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3879pub struct UpdateUserSettingsRequest {
3880 #[prost(message, optional, tag="1")]
3883 pub settings: ::core::option::Option<UserSettings>,
3884}
3885#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3887pub struct UpdateUserSettingsResponse {
3888 #[prost(message, optional, tag="1")]
3890 pub settings: ::core::option::Option<UserSettings>,
3891}
3892#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3894pub struct BulkInviteUsersRequest {
3895 #[prost(string, repeated, tag="1")]
3898 pub emails: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
3899 #[prost(string, tag="2")]
3901 pub role_id: ::prost::alloc::string::String,
3902}
3903#[derive(Clone, PartialEq, ::prost::Message)]
3905pub struct BulkInviteResult {
3906 #[prost(string, tag="1")]
3908 pub email: ::prost::alloc::string::String,
3909 #[prost(bool, tag="2")]
3911 pub success: bool,
3912 #[prost(string, tag="3")]
3915 pub error: ::prost::alloc::string::String,
3916 #[prost(message, optional, tag="4")]
3918 pub user: ::core::option::Option<User>,
3919}
3920#[derive(Clone, PartialEq, ::prost::Message)]
3922pub struct BulkInviteUsersResponse {
3923 #[prost(message, repeated, tag="1")]
3925 pub results: ::prost::alloc::vec::Vec<BulkInviteResult>,
3926 #[prost(int32, tag="2")]
3928 pub invited_count: i32,
3929 #[prost(int32, tag="3")]
3931 pub failed_count: i32,
3932}
3933#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3937pub struct ConfirmPasskeyEnrollmentRequest {
3938}
3939#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3941pub struct ConfirmPasskeyEnrollmentResponse {
3942 #[prost(bool, tag="1")]
3944 pub confirmed: bool,
3945}
3946#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3948pub struct UpdateUserRegionRequest {
3949 #[prost(string, tag="1")]
3951 pub user_id: ::prost::alloc::string::String,
3952 #[prost(string, tag="2")]
3955 pub data_governance_region: ::prost::alloc::string::String,
3956}
3957#[derive(Clone, PartialEq, ::prost::Message)]
3959pub struct UpdateUserRegionResponse {
3960 #[prost(message, optional, tag="1")]
3962 pub user: ::core::option::Option<User>,
3963 #[prost(string, tag="2")]
3966 pub migration_workflow_id: ::prost::alloc::string::String,
3967}
3968#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3973pub struct SsoAttributeMapping {
3974 #[prost(string, tag="1")]
3977 pub idp_claim: ::prost::alloc::string::String,
3978 #[prost(string, tag="2")]
3982 pub profile_field: ::prost::alloc::string::String,
3983}
3984#[derive(Clone, PartialEq, ::prost::Message)]
3986pub struct Organization {
3987 #[prost(string, tag="1")]
3989 pub id: ::prost::alloc::string::String,
3990 #[prost(string, tag="2")]
3993 pub name: ::prost::alloc::string::String,
3994 #[prost(message, optional, tag="3")]
3996 pub default_workflow: ::core::option::Option<WorkflowDefinition>,
3997 #[prost(message, optional, tag="4")]
3999 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4000 #[prost(enumeration="Industry", tag="5")]
4002 pub industry: i32,
4003 #[prost(enumeration="CompanySize", tag="6")]
4005 pub company_size: i32,
4006 #[prost(message, repeated, tag="7")]
4009 pub sso_attribute_mappings: ::prost::alloc::vec::Vec<SsoAttributeMapping>,
4010 #[prost(string, tag="8")]
4014 pub default_locale: ::prost::alloc::string::String,
4015 #[prost(enumeration="OrgType", tag="9")]
4017 pub org_type: i32,
4018 #[prost(message, optional, tag="10")]
4020 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4021 #[prost(string, tag="11")]
4024 pub data_governance_region: ::prost::alloc::string::String,
4025 #[prost(string, tag="12")]
4028 pub data_content_region: ::prost::alloc::string::String,
4029 #[prost(int32, tag="13")]
4034 pub ml_retrain_cold_threshold: i32,
4035 #[prost(bool, tag="14")]
4037 pub ml_cancelled_counts: bool,
4038 #[prost(int32, tag="15")]
4040 pub ml_manual_limit_monthly: i32,
4041 #[prost(int32, tag="16")]
4043 pub ml_manual_retrains_used: i32,
4044 #[prost(bool, tag="17")]
4046 pub ml_needs_retrain: bool,
4047 #[prost(int32, tag="18")]
4049 pub campaigns_since_last_training: i32,
4050 #[prost(int32, tag="19")]
4052 pub total_completed_campaigns: i32,
4053 #[prost(message, optional, tag="20")]
4055 pub last_ml_training_at: ::core::option::Option<::prost_types::Timestamp>,
4056}
4057#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4061pub struct CreateOrganizationRequest {
4062 #[prost(string, tag="1")]
4065 pub name: ::prost::alloc::string::String,
4066 #[prost(enumeration="Industry", tag="2")]
4068 pub industry: i32,
4069 #[prost(enumeration="CompanySize", tag="3")]
4071 pub company_size: i32,
4072 #[prost(string, tag="4")]
4075 pub access_code: ::prost::alloc::string::String,
4076 #[prost(string, tag="5")]
4079 pub data_governance_region: ::prost::alloc::string::String,
4080}
4081#[derive(Clone, PartialEq, ::prost::Message)]
4083pub struct CreateOrganizationResponse {
4084 #[prost(message, optional, tag="1")]
4086 pub organization: ::core::option::Option<Organization>,
4087 #[prost(message, optional, tag="2")]
4089 pub admin_user: ::core::option::Option<User>,
4090}
4091#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4093pub struct GetOrganizationRequest {
4094}
4095#[derive(Clone, PartialEq, ::prost::Message)]
4097pub struct GetOrganizationResponse {
4098 #[prost(message, optional, tag="1")]
4100 pub organization: ::core::option::Option<Organization>,
4101}
4102#[derive(Clone, PartialEq, ::prost::Message)]
4104pub struct UpdateOrganizationRequest {
4105 #[prost(string, tag="1")]
4108 pub name: ::prost::alloc::string::String,
4109 #[prost(message, optional, tag="2")]
4111 pub default_workflow: ::core::option::Option<WorkflowDefinition>,
4112 #[prost(enumeration="Industry", tag="3")]
4114 pub industry: i32,
4115 #[prost(enumeration="CompanySize", tag="4")]
4117 pub company_size: i32,
4118 #[prost(string, tag="5")]
4121 pub default_locale: ::prost::alloc::string::String,
4122 #[prost(int32, tag="6")]
4124 pub ml_retrain_cold_threshold: i32,
4125 #[prost(bool, optional, tag="7")]
4128 pub ml_cancelled_counts: ::core::option::Option<bool>,
4129 #[prost(int32, tag="8")]
4132 pub ml_manual_limit_monthly: i32,
4133}
4134#[derive(Clone, PartialEq, ::prost::Message)]
4136pub struct UpdateOrganizationResponse {
4137 #[prost(message, optional, tag="1")]
4139 pub organization: ::core::option::Option<Organization>,
4140}
4141#[derive(Clone, PartialEq, ::prost::Message)]
4143pub struct UpdateSsoAttributeMappingsRequest {
4144 #[prost(message, repeated, tag="1")]
4146 pub sso_attribute_mappings: ::prost::alloc::vec::Vec<SsoAttributeMapping>,
4147}
4148#[derive(Clone, PartialEq, ::prost::Message)]
4150pub struct UpdateSsoAttributeMappingsResponse {
4151 #[prost(message, optional, tag="1")]
4153 pub organization: ::core::option::Option<Organization>,
4154}
4155#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4157pub struct RotateAnalyticsSaltRequest {
4158 #[prost(int32, tag="1")]
4160 pub new_bucket_count: i32,
4161}
4162#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4164pub struct RotateAnalyticsSaltResponse {
4165 #[prost(int32, tag="1")]
4167 pub bucket_count: i32,
4168}
4169#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4171pub struct UpdateAnalyticsEpsilonRequest {
4172 #[prost(float, tag="1")]
4174 pub epsilon: f32,
4175}
4176#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4178pub struct UpdateAnalyticsEpsilonResponse {
4179 #[prost(float, tag="1")]
4181 pub epsilon: f32,
4182}
4183#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4185pub struct CreateSandboxOrganizationRequest {
4186 #[prost(string, tag="1")]
4189 pub name: ::prost::alloc::string::String,
4190 #[prost(message, optional, tag="2")]
4193 pub expires_at: ::core::option::Option<::prost_types::Timestamp>,
4194 #[prost(string, tag="3")]
4197 pub data_governance_region: ::prost::alloc::string::String,
4198 #[prost(string, tag="4")]
4202 pub fixture_id: ::prost::alloc::string::String,
4203}
4204#[derive(Clone, PartialEq, ::prost::Message)]
4206pub struct CreateSandboxOrganizationResponse {
4207 #[prost(message, optional, tag="1")]
4209 pub organization: ::core::option::Option<Organization>,
4210 #[prost(message, optional, tag="2")]
4212 pub admin_user: ::core::option::Option<User>,
4213}
4214#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4217pub struct DeleteSandboxOrganizationRequest {
4218 #[prost(string, tag="1")]
4220 pub org_id: ::prost::alloc::string::String,
4221}
4222#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4225pub struct DeleteSandboxOrganizationResponse {
4226 #[prost(string, tag="1")]
4228 pub workflow_id: ::prost::alloc::string::String,
4229}
4230#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4232pub struct SandboxFixture {
4233 #[prost(string, tag="1")]
4235 pub id: ::prost::alloc::string::String,
4236 #[prost(string, tag="2")]
4238 pub name: ::prost::alloc::string::String,
4239 #[prost(string, tag="3")]
4241 pub description: ::prost::alloc::string::String,
4242 #[prost(bool, tag="4")]
4245 pub is_default: bool,
4246}
4247#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4250pub struct ListSandboxFixturesRequest {
4251}
4252#[derive(Clone, PartialEq, ::prost::Message)]
4254pub struct ListSandboxFixturesResponse {
4255 #[prost(message, repeated, tag="1")]
4257 pub fixtures: ::prost::alloc::vec::Vec<SandboxFixture>,
4258}
4259#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4262pub struct ListUserOrganizationsRequest {
4263}
4264#[derive(Clone, PartialEq, ::prost::Message)]
4266pub struct ListUserOrganizationsResponse {
4267 #[prost(message, repeated, tag="1")]
4270 pub organizations: ::prost::alloc::vec::Vec<Organization>,
4271}
4272#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4277pub struct ListUserSandboxesRequest {
4278}
4279#[derive(Clone, PartialEq, ::prost::Message)]
4281pub struct ListUserSandboxesResponse {
4282 #[prost(message, repeated, tag="1")]
4287 pub sandboxes: ::prost::alloc::vec::Vec<Organization>,
4288}
4289#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4293#[repr(i32)]
4294pub enum Industry {
4295 Unspecified = 0,
4296 Technology = 1,
4297 Finance = 2,
4298 Healthcare = 3,
4299 Education = 4,
4300 Retail = 5,
4301 Manufacturing = 6,
4302 Media = 7,
4303 Other = 8,
4304}
4305impl Industry {
4306 pub fn as_str_name(&self) -> &'static str {
4311 match self {
4312 Self::Unspecified => "INDUSTRY_UNSPECIFIED",
4313 Self::Technology => "INDUSTRY_TECHNOLOGY",
4314 Self::Finance => "INDUSTRY_FINANCE",
4315 Self::Healthcare => "INDUSTRY_HEALTHCARE",
4316 Self::Education => "INDUSTRY_EDUCATION",
4317 Self::Retail => "INDUSTRY_RETAIL",
4318 Self::Manufacturing => "INDUSTRY_MANUFACTURING",
4319 Self::Media => "INDUSTRY_MEDIA",
4320 Self::Other => "INDUSTRY_OTHER",
4321 }
4322 }
4323 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4325 match value {
4326 "INDUSTRY_UNSPECIFIED" => Some(Self::Unspecified),
4327 "INDUSTRY_TECHNOLOGY" => Some(Self::Technology),
4328 "INDUSTRY_FINANCE" => Some(Self::Finance),
4329 "INDUSTRY_HEALTHCARE" => Some(Self::Healthcare),
4330 "INDUSTRY_EDUCATION" => Some(Self::Education),
4331 "INDUSTRY_RETAIL" => Some(Self::Retail),
4332 "INDUSTRY_MANUFACTURING" => Some(Self::Manufacturing),
4333 "INDUSTRY_MEDIA" => Some(Self::Media),
4334 "INDUSTRY_OTHER" => Some(Self::Other),
4335 _ => None,
4336 }
4337 }
4338}
4339#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4341#[repr(i32)]
4342pub enum CompanySize {
4343 Unspecified = 0,
4344 CompanySize1200 = 1,
4345 CompanySize200500 = 2,
4346 CompanySize5001000 = 3,
4347 CompanySize10005000 = 4,
4348 CompanySize5000Plus = 5,
4349}
4350impl CompanySize {
4351 pub fn as_str_name(&self) -> &'static str {
4356 match self {
4357 Self::Unspecified => "COMPANY_SIZE_UNSPECIFIED",
4358 Self::CompanySize1200 => "COMPANY_SIZE_1_200",
4359 Self::CompanySize200500 => "COMPANY_SIZE_200_500",
4360 Self::CompanySize5001000 => "COMPANY_SIZE_500_1000",
4361 Self::CompanySize10005000 => "COMPANY_SIZE_1000_5000",
4362 Self::CompanySize5000Plus => "COMPANY_SIZE_5000_PLUS",
4363 }
4364 }
4365 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4367 match value {
4368 "COMPANY_SIZE_UNSPECIFIED" => Some(Self::Unspecified),
4369 "COMPANY_SIZE_1_200" => Some(Self::CompanySize1200),
4370 "COMPANY_SIZE_200_500" => Some(Self::CompanySize200500),
4371 "COMPANY_SIZE_500_1000" => Some(Self::CompanySize5001000),
4372 "COMPANY_SIZE_1000_5000" => Some(Self::CompanySize10005000),
4373 "COMPANY_SIZE_5000_PLUS" => Some(Self::CompanySize5000Plus),
4374 _ => None,
4375 }
4376 }
4377}
4378#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4380#[repr(i32)]
4381pub enum OrgType {
4382 Unspecified = 0,
4383 Standard = 1,
4384 Sandbox = 2,
4385 Staff = 3,
4388}
4389impl OrgType {
4390 pub fn as_str_name(&self) -> &'static str {
4395 match self {
4396 Self::Unspecified => "ORG_TYPE_UNSPECIFIED",
4397 Self::Standard => "ORG_TYPE_STANDARD",
4398 Self::Sandbox => "ORG_TYPE_SANDBOX",
4399 Self::Staff => "ORG_TYPE_STAFF",
4400 }
4401 }
4402 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4404 match value {
4405 "ORG_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
4406 "ORG_TYPE_STANDARD" => Some(Self::Standard),
4407 "ORG_TYPE_SANDBOX" => Some(Self::Sandbox),
4408 "ORG_TYPE_STAFF" => Some(Self::Staff),
4409 _ => None,
4410 }
4411 }
4412}
4413#[derive(Clone, PartialEq, ::prost::Message)]
4417pub struct UserRenderContext {
4418 #[prost(string, tag="1")]
4420 pub user_id: ::prost::alloc::string::String,
4421 #[prost(map="string, string", tag="2")]
4424 pub variables: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>,
4425}
4426#[derive(Clone, PartialEq, ::prost::Message)]
4428pub struct RenderBatchRequest {
4429 #[prost(string, tag="1")]
4431 pub template_id: ::prost::alloc::string::String,
4432 #[prost(int32, tag="2")]
4434 pub version: i32,
4435 #[prost(message, repeated, tag="3")]
4438 pub users: ::prost::alloc::vec::Vec<UserRenderContext>,
4439}
4440#[derive(Clone, PartialEq, ::prost::Message)]
4443pub struct RenderBatchResponse {
4444 #[prost(string, tag="1")]
4446 pub user_id: ::prost::alloc::string::String,
4447 #[prost(message, optional, tag="2")]
4449 pub message: ::core::option::Option<Message>,
4450 #[prost(string, tag="3")]
4452 pub error: ::prost::alloc::string::String,
4453}
4454#[derive(Clone, PartialEq, ::prost::Message)]
4459pub struct SessionRecording {
4460 #[prost(string, tag="1")]
4462 pub id: ::prost::alloc::string::String,
4463 #[prost(message, optional, tag="2")]
4465 pub start_time: ::core::option::Option<::prost_types::Timestamp>,
4466 #[prost(message, optional, tag="3")]
4468 pub end_time: ::core::option::Option<::prost_types::Timestamp>,
4469 #[prost(int32, tag="4")]
4471 pub duration_seconds: i32,
4472 #[prost(float, tag="5")]
4474 pub activity_score: f32,
4475}
4476#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4478pub struct ListSessionRecordingsRequest {
4479 #[prost(string, tag="1")]
4482 pub campaign_id: ::prost::alloc::string::String,
4483 #[prost(message, optional, tag="2")]
4485 pub date_from: ::core::option::Option<::prost_types::Timestamp>,
4486 #[prost(message, optional, tag="3")]
4488 pub date_to: ::core::option::Option<::prost_types::Timestamp>,
4489 #[prost(message, optional, tag="4")]
4491 pub pagination: ::core::option::Option<Pagination>,
4492}
4493#[derive(Clone, PartialEq, ::prost::Message)]
4495pub struct ListSessionRecordingsResponse {
4496 #[prost(message, repeated, tag="1")]
4498 pub recordings: ::prost::alloc::vec::Vec<SessionRecording>,
4499 #[prost(message, optional, tag="2")]
4501 pub pagination_meta: ::core::option::Option<PaginationMeta>,
4502}
4503#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4505pub struct GetSessionSnapshotsRequest {
4506 #[prost(string, tag="1")]
4509 pub recording_id: ::prost::alloc::string::String,
4510}
4511#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4513pub struct GetSessionSnapshotsResponse {
4514 #[prost(string, tag="1")]
4517 pub snapshot_data: ::prost::alloc::string::String,
4518}
4519#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4523pub struct ListRolesRequest {
4524}
4525#[derive(Clone, PartialEq, ::prost::Message)]
4527pub struct ListRolesResponse {
4528 #[prost(message, repeated, tag="1")]
4530 pub roles: ::prost::alloc::vec::Vec<Role>,
4531}
4532#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4534pub struct CreateRoleRequest {
4535 #[prost(string, tag="1")]
4538 pub name: ::prost::alloc::string::String,
4539 #[prost(enumeration="Permission", repeated, tag="2")]
4542 pub permissions: ::prost::alloc::vec::Vec<i32>,
4543}
4544#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4546pub struct CreateRoleResponse {
4547 #[prost(message, optional, tag="1")]
4549 pub role: ::core::option::Option<Role>,
4550}
4551#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4553pub struct UpdateRoleRequest {
4554 #[prost(string, tag="1")]
4556 pub role_id: ::prost::alloc::string::String,
4557 #[prost(string, tag="2")]
4559 pub name: ::prost::alloc::string::String,
4560 #[prost(enumeration="Permission", repeated, tag="3")]
4564 pub permissions: ::prost::alloc::vec::Vec<i32>,
4565}
4566#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4568pub struct UpdateRoleResponse {
4569 #[prost(message, optional, tag="1")]
4571 pub role: ::core::option::Option<Role>,
4572}
4573#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4575pub struct DeleteRoleRequest {
4576 #[prost(string, tag="1")]
4578 pub role_id: ::prost::alloc::string::String,
4579}
4580#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4582pub struct DeleteRoleResponse {
4583}
4584#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4590pub struct SamlAttributeNames {
4591 #[prost(string, tag="1")]
4593 pub email: ::prost::alloc::string::String,
4594 #[prost(string, tag="2")]
4596 pub given_name: ::prost::alloc::string::String,
4597 #[prost(string, tag="3")]
4599 pub family_name: ::prost::alloc::string::String,
4600}
4601#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4603pub struct SsoProvider {
4604 #[prost(string, tag="1")]
4606 pub id: ::prost::alloc::string::String,
4607 #[prost(string, tag="2")]
4610 pub domain: ::prost::alloc::string::String,
4611 #[prost(enumeration="SsoProviderType", tag="3")]
4613 pub r#type: i32,
4614 #[prost(string, tag="4")]
4617 pub metadata_url: ::prost::alloc::string::String,
4618 #[prost(string, tag="5")]
4621 pub idp_provider_name: ::prost::alloc::string::String,
4622 #[prost(message, optional, tag="6")]
4624 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4625 #[prost(message, optional, tag="7")]
4627 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
4628 #[prost(message, optional, tag="8")]
4630 pub attribute_mapping: ::core::option::Option<SamlAttributeNames>,
4631}
4632#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4635pub struct CheckSsoByDomainRequest {
4636 #[prost(string, tag="1")]
4639 pub email: ::prost::alloc::string::String,
4640}
4641#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4643pub struct CheckSsoByDomainResponse {
4644 #[prost(bool, tag="1")]
4646 pub sso_enabled: bool,
4647 #[prost(string, tag="2")]
4650 pub provider_name: ::prost::alloc::string::String,
4651}
4652#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4654pub struct CreateSsoProviderRequest {
4655 #[prost(string, tag="1")]
4658 pub domain: ::prost::alloc::string::String,
4659 #[prost(enumeration="SsoProviderType", tag="2")]
4661 pub r#type: i32,
4662 #[prost(string, tag="3")]
4665 pub metadata_url: ::prost::alloc::string::String,
4666 #[prost(message, optional, tag="4")]
4669 pub attribute_mapping: ::core::option::Option<SamlAttributeNames>,
4670}
4671#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4673pub struct CreateSsoProviderResponse {
4674 #[prost(message, optional, tag="1")]
4676 pub provider: ::core::option::Option<SsoProvider>,
4677}
4678#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4681pub struct GetSsoProviderRequest {
4682}
4683#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4685pub struct GetSsoProviderResponse {
4686 #[prost(message, optional, tag="1")]
4688 pub provider: ::core::option::Option<SsoProvider>,
4689}
4690#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4692pub struct DeleteSsoProviderRequest {
4693 #[prost(string, tag="1")]
4695 pub provider_id: ::prost::alloc::string::String,
4696}
4697#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4699pub struct DeleteSsoProviderResponse {
4700}
4701#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4705#[repr(i32)]
4706pub enum SsoProviderType {
4707 Unspecified = 0,
4709 Saml = 1,
4711 Oidc = 2,
4713}
4714impl SsoProviderType {
4715 pub fn as_str_name(&self) -> &'static str {
4720 match self {
4721 Self::Unspecified => "SSO_PROVIDER_TYPE_UNSPECIFIED",
4722 Self::Saml => "SSO_PROVIDER_TYPE_SAML",
4723 Self::Oidc => "SSO_PROVIDER_TYPE_OIDC",
4724 }
4725 }
4726 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4728 match value {
4729 "SSO_PROVIDER_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
4730 "SSO_PROVIDER_TYPE_SAML" => Some(Self::Saml),
4731 "SSO_PROVIDER_TYPE_OIDC" => Some(Self::Oidc),
4732 _ => None,
4733 }
4734 }
4735}
4736#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4742pub struct Team {
4743 #[prost(string, tag="1")]
4745 pub id: ::prost::alloc::string::String,
4746 #[prost(string, tag="2")]
4749 pub name: ::prost::alloc::string::String,
4750 #[prost(string, tag="3")]
4753 pub description: ::prost::alloc::string::String,
4754 #[prost(int32, tag="4")]
4756 pub member_count: i32,
4757 #[prost(message, optional, tag="5")]
4759 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4760 #[prost(message, optional, tag="6")]
4762 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
4763 #[prost(bool, tag="7")]
4765 pub is_default: bool,
4766 #[prost(string, tag="8")]
4768 pub created_by: ::prost::alloc::string::String,
4769}
4770#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4772pub struct CreateTeamRequest {
4773 #[prost(string, tag="1")]
4776 pub name: ::prost::alloc::string::String,
4777 #[prost(string, tag="2")]
4780 pub description: ::prost::alloc::string::String,
4781}
4782#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4784pub struct CreateTeamResponse {
4785 #[prost(message, optional, tag="1")]
4787 pub team: ::core::option::Option<Team>,
4788}
4789#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4791pub struct GetTeamRequest {
4792 #[prost(string, tag="1")]
4794 pub team_id: ::prost::alloc::string::String,
4795}
4796#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4798pub struct GetTeamResponse {
4799 #[prost(message, optional, tag="1")]
4801 pub team: ::core::option::Option<Team>,
4802}
4803#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4805pub struct ListTeamsRequest {
4806 #[prost(message, optional, tag="1")]
4808 pub pagination: ::core::option::Option<Pagination>,
4809}
4810#[derive(Clone, PartialEq, ::prost::Message)]
4812pub struct ListTeamsResponse {
4813 #[prost(message, repeated, tag="1")]
4815 pub teams: ::prost::alloc::vec::Vec<Team>,
4816 #[prost(message, optional, tag="2")]
4818 pub pagination_meta: ::core::option::Option<PaginationMeta>,
4819}
4820#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4822pub struct UpdateTeamRequest {
4823 #[prost(string, tag="1")]
4825 pub team_id: ::prost::alloc::string::String,
4826 #[prost(string, tag="2")]
4830 pub name: ::prost::alloc::string::String,
4831 #[prost(string, tag="3")]
4834 pub description: ::prost::alloc::string::String,
4835}
4836#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4838pub struct UpdateTeamResponse {
4839 #[prost(message, optional, tag="1")]
4841 pub team: ::core::option::Option<Team>,
4842}
4843#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4845pub struct DeleteTeamRequest {
4846 #[prost(string, tag="1")]
4849 pub team_id: ::prost::alloc::string::String,
4850}
4851#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4853pub struct DeleteTeamResponse {
4854}
4855#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4857pub struct AddTeamMembersRequest {
4858 #[prost(string, tag="1")]
4860 pub team_id: ::prost::alloc::string::String,
4861 #[prost(string, repeated, tag="2")]
4865 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4866}
4867#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4869pub struct AddTeamMembersResponse {
4870 #[prost(message, optional, tag="1")]
4872 pub team: ::core::option::Option<Team>,
4873}
4874#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4876pub struct RemoveTeamMembersRequest {
4877 #[prost(string, tag="1")]
4879 pub team_id: ::prost::alloc::string::String,
4880 #[prost(string, repeated, tag="2")]
4883 pub user_ids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4884}
4885#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4887pub struct RemoveTeamMembersResponse {
4888 #[prost(message, optional, tag="1")]
4890 pub team: ::core::option::Option<Team>,
4891}
4892#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4894pub struct ListTeamMembersRequest {
4895 #[prost(string, tag="1")]
4897 pub team_id: ::prost::alloc::string::String,
4898 #[prost(message, optional, tag="2")]
4900 pub pagination: ::core::option::Option<Pagination>,
4901}
4902#[derive(Clone, PartialEq, ::prost::Message)]
4904pub struct ListTeamMembersResponse {
4905 #[prost(message, repeated, tag="1")]
4907 pub users: ::prost::alloc::vec::Vec<User>,
4908 #[prost(message, optional, tag="2")]
4910 pub pagination_meta: ::core::option::Option<PaginationMeta>,
4911}
4912#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4916pub struct TemplateVariable {
4917 #[prost(string, tag="1")]
4920 pub name: ::prost::alloc::string::String,
4921 #[prost(string, tag="2")]
4924 pub description: ::prost::alloc::string::String,
4925 #[prost(bool, tag="3")]
4927 pub required: bool,
4928 #[prost(enumeration="TemplateVariableSource", tag="4")]
4930 pub source: i32,
4931 #[prost(string, tag="5")]
4934 pub default_value: ::prost::alloc::string::String,
4935 #[prost(bool, tag="6")]
4938 pub pii: bool,
4939}
4940#[derive(Clone, PartialEq, ::prost::Message)]
4943pub struct Template {
4944 #[prost(string, tag="1")]
4946 pub id: ::prost::alloc::string::String,
4947 #[prost(string, tag="2")]
4950 pub name: ::prost::alloc::string::String,
4951 #[prost(string, tag="3")]
4954 pub body: ::prost::alloc::string::String,
4955 #[prost(message, repeated, tag="4")]
4957 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
4958 #[prost(int32, tag="5")]
4960 pub version: i32,
4961 #[prost(message, optional, tag="6")]
4963 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
4964 #[prost(message, optional, tag="7")]
4966 pub updated_at: ::core::option::Option<::prost_types::Timestamp>,
4967 #[prost(string, tag="8")]
4971 pub title: ::prost::alloc::string::String,
4972 #[prost(enumeration="TemplateType", tag="9")]
4975 pub r#type: i32,
4976 #[prost(string, tag="10")]
4980 pub source_locale: ::prost::alloc::string::String,
4981}
4982#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4985pub struct TemplateTranslation {
4986 #[prost(string, tag="1")]
4988 pub id: ::prost::alloc::string::String,
4989 #[prost(string, tag="2")]
4991 pub template_id: ::prost::alloc::string::String,
4992 #[prost(int32, tag="3")]
4994 pub version: i32,
4995 #[prost(string, tag="4")]
4997 pub locale: ::prost::alloc::string::String,
4998 #[prost(string, tag="5")]
5001 pub title: ::prost::alloc::string::String,
5002 #[prost(string, tag="6")]
5005 pub body: ::prost::alloc::string::String,
5006 #[prost(enumeration="TranslationStatus", tag="7")]
5008 pub status: i32,
5009 #[prost(string, tag="8")]
5011 pub translated_by: ::prost::alloc::string::String,
5012 #[prost(string, tag="9")]
5014 pub reviewed_by: ::prost::alloc::string::String,
5015 #[prost(message, optional, tag="10")]
5017 pub reviewed_at: ::core::option::Option<::prost_types::Timestamp>,
5018 #[prost(message, optional, tag="11")]
5020 pub created_at: ::core::option::Option<::prost_types::Timestamp>,
5021}
5022#[derive(Clone, PartialEq, ::prost::Message)]
5024pub struct CreateTemplateRequest {
5025 #[prost(string, tag="1")]
5028 pub name: ::prost::alloc::string::String,
5029 #[prost(string, tag="2")]
5032 pub body: ::prost::alloc::string::String,
5033 #[prost(message, repeated, tag="3")]
5035 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5036 #[prost(string, tag="4")]
5039 pub title: ::prost::alloc::string::String,
5040 #[prost(enumeration="TemplateType", tag="5")]
5042 pub r#type: i32,
5043 #[prost(string, tag="6")]
5046 pub source_locale: ::prost::alloc::string::String,
5047}
5048#[derive(Clone, PartialEq, ::prost::Message)]
5050pub struct CreateTemplateResponse {
5051 #[prost(message, optional, tag="1")]
5053 pub template: ::core::option::Option<Template>,
5054}
5055#[derive(Clone, PartialEq, ::prost::Message)]
5057pub struct UpdateTemplateRequest {
5058 #[prost(string, tag="1")]
5060 pub template_id: ::prost::alloc::string::String,
5061 #[prost(string, tag="2")]
5064 pub body: ::prost::alloc::string::String,
5065 #[prost(message, repeated, tag="3")]
5067 pub variables: ::prost::alloc::vec::Vec<TemplateVariable>,
5068}
5069#[derive(Clone, PartialEq, ::prost::Message)]
5071pub struct UpdateTemplateResponse {
5072 #[prost(message, optional, tag="1")]
5074 pub template: ::core::option::Option<Template>,
5075}
5076#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5078pub struct GetTemplateRequest {
5079 #[prost(string, tag="1")]
5081 pub template_id: ::prost::alloc::string::String,
5082 #[prost(int32, tag="2")]
5084 pub version: i32,
5085}
5086#[derive(Clone, PartialEq, ::prost::Message)]
5088pub struct GetTemplateResponse {
5089 #[prost(message, optional, tag="1")]
5091 pub template: ::core::option::Option<Template>,
5092}
5093#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5095pub struct ListTemplatesRequest {
5096 #[prost(message, optional, tag="1")]
5098 pub pagination: ::core::option::Option<Pagination>,
5099 #[prost(enumeration="TemplateType", tag="2")]
5101 pub r#type: i32,
5102}
5103#[derive(Clone, PartialEq, ::prost::Message)]
5105pub struct ListTemplatesResponse {
5106 #[prost(message, repeated, tag="1")]
5108 pub templates: ::prost::alloc::vec::Vec<Template>,
5109 #[prost(message, optional, tag="2")]
5111 pub pagination_meta: ::core::option::Option<PaginationMeta>,
5112}
5113#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5115pub struct CreateTemplateTranslationRequest {
5116 #[prost(string, tag="1")]
5118 pub template_id: ::prost::alloc::string::String,
5119 #[prost(int32, tag="2")]
5121 pub version: i32,
5122 #[prost(string, tag="3")]
5124 pub locale: ::prost::alloc::string::String,
5125 #[prost(string, tag="4")]
5127 pub title: ::prost::alloc::string::String,
5128 #[prost(string, tag="5")]
5130 pub body: ::prost::alloc::string::String,
5131 #[prost(string, tag="6")]
5133 pub translated_by: ::prost::alloc::string::String,
5134 #[prost(enumeration="TranslationStatus", tag="7")]
5136 pub status: i32,
5137}
5138#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5140pub struct CreateTemplateTranslationResponse {
5141 #[prost(message, optional, tag="1")]
5143 pub translation: ::core::option::Option<TemplateTranslation>,
5144}
5145#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5147pub struct UpdateTemplateTranslationRequest {
5148 #[prost(string, tag="1")]
5150 pub translation_id: ::prost::alloc::string::String,
5151 #[prost(string, tag="2")]
5153 pub title: ::prost::alloc::string::String,
5154 #[prost(string, tag="3")]
5156 pub body: ::prost::alloc::string::String,
5157 #[prost(enumeration="TranslationStatus", tag="4")]
5159 pub status: i32,
5160}
5161#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5163pub struct UpdateTemplateTranslationResponse {
5164 #[prost(message, optional, tag="1")]
5166 pub translation: ::core::option::Option<TemplateTranslation>,
5167}
5168#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5170pub struct ListTemplateTranslationsRequest {
5171 #[prost(string, tag="1")]
5173 pub template_id: ::prost::alloc::string::String,
5174 #[prost(int32, tag="2")]
5176 pub version: i32,
5177}
5178#[derive(Clone, PartialEq, ::prost::Message)]
5180pub struct ListTemplateTranslationsResponse {
5181 #[prost(message, repeated, tag="1")]
5183 pub translations: ::prost::alloc::vec::Vec<TemplateTranslation>,
5184}
5185#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5187pub struct ApproveTemplateTranslationRequest {
5188 #[prost(string, tag="1")]
5190 pub translation_id: ::prost::alloc::string::String,
5191}
5192#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5194pub struct ApproveTemplateTranslationResponse {
5195 #[prost(message, optional, tag="1")]
5197 pub translation: ::core::option::Option<TemplateTranslation>,
5198}
5199#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5203#[repr(i32)]
5204pub enum TemplateType {
5205 Unspecified = 0,
5207 Markdown = 1,
5209 Rich = 2,
5211 Html = 3,
5213}
5214impl TemplateType {
5215 pub fn as_str_name(&self) -> &'static str {
5220 match self {
5221 Self::Unspecified => "TEMPLATE_TYPE_UNSPECIFIED",
5222 Self::Markdown => "TEMPLATE_TYPE_MARKDOWN",
5223 Self::Rich => "TEMPLATE_TYPE_RICH",
5224 Self::Html => "TEMPLATE_TYPE_HTML",
5225 }
5226 }
5227 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5229 match value {
5230 "TEMPLATE_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
5231 "TEMPLATE_TYPE_MARKDOWN" => Some(Self::Markdown),
5232 "TEMPLATE_TYPE_RICH" => Some(Self::Rich),
5233 "TEMPLATE_TYPE_HTML" => Some(Self::Html),
5234 _ => None,
5235 }
5236 }
5237}
5238#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5240#[repr(i32)]
5241pub enum TemplateVariableSource {
5242 Unspecified = 0,
5244 Profile = 1,
5246 Custom = 2,
5248}
5249impl TemplateVariableSource {
5250 pub fn as_str_name(&self) -> &'static str {
5255 match self {
5256 Self::Unspecified => "TEMPLATE_VARIABLE_SOURCE_UNSPECIFIED",
5257 Self::Profile => "TEMPLATE_VARIABLE_SOURCE_PROFILE",
5258 Self::Custom => "TEMPLATE_VARIABLE_SOURCE_CUSTOM",
5259 }
5260 }
5261 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5263 match value {
5264 "TEMPLATE_VARIABLE_SOURCE_UNSPECIFIED" => Some(Self::Unspecified),
5265 "TEMPLATE_VARIABLE_SOURCE_PROFILE" => Some(Self::Profile),
5266 "TEMPLATE_VARIABLE_SOURCE_CUSTOM" => Some(Self::Custom),
5267 _ => None,
5268 }
5269 }
5270}
5271#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5273#[repr(i32)]
5274pub enum TranslationStatus {
5275 Unspecified = 0,
5276 Draft = 1,
5278 AiTranslated = 2,
5280 InReview = 3,
5282 Approved = 4,
5284}
5285impl TranslationStatus {
5286 pub fn as_str_name(&self) -> &'static str {
5291 match self {
5292 Self::Unspecified => "TRANSLATION_STATUS_UNSPECIFIED",
5293 Self::Draft => "TRANSLATION_STATUS_DRAFT",
5294 Self::AiTranslated => "TRANSLATION_STATUS_AI_TRANSLATED",
5295 Self::InReview => "TRANSLATION_STATUS_IN_REVIEW",
5296 Self::Approved => "TRANSLATION_STATUS_APPROVED",
5297 }
5298 }
5299 pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5301 match value {
5302 "TRANSLATION_STATUS_UNSPECIFIED" => Some(Self::Unspecified),
5303 "TRANSLATION_STATUS_DRAFT" => Some(Self::Draft),
5304 "TRANSLATION_STATUS_AI_TRANSLATED" => Some(Self::AiTranslated),
5305 "TRANSLATION_STATUS_IN_REVIEW" => Some(Self::InReview),
5306 "TRANSLATION_STATUS_APPROVED" => Some(Self::Approved),
5307 _ => None,
5308 }
5309 }
5310}
5311include!("pidgr.v1.tonic.rs");
5312