use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum UserIdType {
#[serde(rename = "open_id")]
OpenId,
#[serde(rename = "user_id")]
UserId,
#[serde(rename = "union_id")]
UnionId,
}
impl UserIdType {
pub fn as_str(&self) -> &str {
match self {
UserIdType::OpenId => "open_id",
UserIdType::UserId => "user_id",
UserIdType::UnionId => "union_id",
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum DepartmentIdType {
#[serde(rename = "open_department_id")]
OpenDepartmentId,
#[serde(rename = "department_id")]
DepartmentId,
}
impl DepartmentIdType {
pub fn as_str(&self) -> &str {
match self {
DepartmentIdType::OpenDepartmentId => "open_department_id",
DepartmentIdType::DepartmentId => "department_id",
}
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Application {
#[serde(skip_serializing_if = "Option::is_none")]
pub app_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub app_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub avatar_url: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub app_type: Option<AppType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<AppStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub create_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub update_time: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum AppType {
#[serde(rename = "self_built")]
SelfBuilt,
#[serde(rename = "marketplace")]
Marketplace,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum AppStatus {
#[serde(rename = "developing")]
Developing,
#[serde(rename = "published")]
Published,
#[serde(rename = "removed")]
Removed,
#[serde(rename = "disabled")]
Disabled,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AppVersion {
#[serde(skip_serializing_if = "Option::is_none")]
pub version_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub version_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub remark: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub create_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub publish_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<VersionStatus>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum VersionStatus {
#[serde(rename = "developing")]
Developing,
#[serde(rename = "auditing")]
Auditing,
#[serde(rename = "published")]
Published,
#[serde(rename = "rejected")]
Rejected,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AppCollaborator {
#[serde(skip_serializing_if = "Option::is_none")]
pub collaborator_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub collaborator_type: Option<CollaboratorType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub permissions: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum CollaboratorType {
#[serde(rename = "user")]
User,
#[serde(rename = "group")]
Group,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PermissionScope {
#[serde(skip_serializing_if = "Option::is_none")]
pub permission: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub granted: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<AuthStatus>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum AuthStatus {
#[serde(rename = "granted")]
Granted,
#[serde(rename = "not_granted")]
NotGranted,
#[serde(rename = "pending")]
Pending,
#[serde(rename = "rejected")]
Rejected,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AppAdmin {
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub permissions: Option<Vec<AdminPermission>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum AdminPermission {
#[serde(rename = "app_management")]
AppManagement,
#[serde(rename = "user_management")]
UserManagement,
#[serde(rename = "permission_management")]
PermissionManagement,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AppAvailability {
#[serde(skip_serializing_if = "Option::is_none")]
pub is_visible_to_all: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub visible_list: Option<VisibilityList>,
#[serde(skip_serializing_if = "Option::is_none")]
pub invisible_list: Option<VisibilityList>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VisibilityList {
#[serde(skip_serializing_if = "Option::is_none")]
pub user_list: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub department_list: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub group_list: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AppUsage {
#[serde(skip_serializing_if = "Option::is_none")]
pub date: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub active_users: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub new_users: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub message_push_count: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DepartmentUsage {
#[serde(skip_serializing_if = "Option::is_none")]
pub department_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub department_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub active_users: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total_users: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AppFeedback {
#[serde(skip_serializing_if = "Option::is_none")]
pub feedback_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub feedback_type: Option<FeedbackType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub content: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rating: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub create_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<FeedbackStatus>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum FeedbackType {
#[serde(rename = "bug")]
Bug,
#[serde(rename = "feature")]
Feature,
#[serde(rename = "other")]
Other,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum FeedbackStatus {
#[serde(rename = "pending")]
Pending,
#[serde(rename = "processing")]
Processing,
#[serde(rename = "completed")]
Completed,
#[serde(rename = "closed")]
Closed,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AppBadge {
#[serde(skip_serializing_if = "Option::is_none")]
pub badge_type: Option<BadgeType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub content: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum BadgeType {
#[serde(rename = "number")]
Number,
#[serde(rename = "dot")]
Dot,
#[serde(rename = "clear")]
Clear,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Order {
#[serde(skip_serializing_if = "Option::is_none")]
pub order_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<OrderStatus>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pricing_plan_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub quantity: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub purchase_time: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub expire_time: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum OrderStatus {
#[serde(rename = "pending")]
Pending,
#[serde(rename = "paid")]
Paid,
#[serde(rename = "cancelled")]
Cancelled,
#[serde(rename = "expired")]
Expired,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PricingPlan {
#[serde(skip_serializing_if = "Option::is_none")]
pub pricing_plan_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub plan_name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub price: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub billing_cycle: Option<BillingCycle>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum BillingCycle {
#[serde(rename = "monthly")]
Monthly,
#[serde(rename = "yearly")]
Yearly,
#[serde(rename = "once")]
Once,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AuditStatus {
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<AuditResult>,
#[serde(skip_serializing_if = "Option::is_none")]
pub comment: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub audit_time: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum AuditResult {
#[serde(rename = "pending")]
Pending,
#[serde(rename = "approved")]
Approved,
#[serde(rename = "rejected")]
Rejected,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ContactsRange {
#[serde(skip_serializing_if = "Option::is_none")]
pub range_type: Option<ContactsRangeType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub department_list: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_list: Option<Vec<String>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ContactsRangeType {
#[serde(rename = "all")]
All,
#[serde(rename = "some")]
Some,
#[serde(rename = "admin_range")]
AdminRange,
}