use crate::user::model::ZabbixUser;
use serde::{Deserialize, Serialize};
use serde_with::skip_serializing_none;
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct UserGroupPermission {
pub id: String,
pub permission: i32,
}
#[skip_serializing_none]
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct ZabbixUserGroup {
#[serde(rename = "usrgrpid")]
pub usrgrp_id: String,
pub name: String,
pub gui_access: Option<String>,
pub users_status: Option<String>,
pub debug_mode: Option<String>,
pub users: Option<Vec<ZabbixUser>>,
pub rights: Option<Vec<UserGroupPermission>>,
}
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct UserGroupTagFilter {
pub groupid: String,
pub tag: String,
pub value: String,
}
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct UserGroupUser {
#[serde(rename = "userid")]
pub user_id: String,
}
#[skip_serializing_none]
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct CreateUserGroupRequest {
pub name: String,
pub debug_mode: i32,
pub gui_access: Option<i32>,
pub users_status: Option<i32>,
pub hostgroup_rights: Option<Vec<UserGroupPermission>>,
pub templategroup_rights: Option<Vec<UserGroupPermission>>,
pub tag_filters: Option<Vec<UserGroupTagFilter>>,
pub users: Option<Vec<UserGroupUser>>,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct CreateUserGroupResponse {
#[serde(rename = "usrgrpids")]
pub user_group_ids: Vec<String>,
}