use derive_builder::Builder;
use serde::{Deserialize, Serialize};
use crate::error::OpenAIError;
use crate::spec::admin::roles::Role;
use crate::spec::admin::users::User;
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct Group {
pub object: String,
pub id: String,
pub name: String,
pub created_at: u64,
pub scim_managed: bool,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct GroupResponse {
pub id: String,
pub name: String,
pub created_at: u64,
pub is_scim_managed: bool,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct GroupListResource {
pub object: String,
pub data: Vec<GroupResponse>,
pub has_more: bool,
pub next: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct GroupDeletedResource {
pub object: String,
pub id: String,
pub deleted: bool,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct GroupResourceWithSuccess {
pub id: String,
pub name: String,
pub created_at: u64,
pub is_scim_managed: bool,
}
#[derive(Debug, Serialize, Deserialize, Builder, Clone, PartialEq)]
#[builder(name = "CreateGroupRequestArgs")]
#[builder(pattern = "mutable")]
#[builder(setter(into, strip_option))]
#[builder(derive(Debug))]
#[builder(build_fn(error = "OpenAIError"))]
pub struct CreateGroupBody {
pub name: String,
}
#[derive(Debug, Serialize, Deserialize, Builder, Clone, PartialEq)]
#[builder(name = "UpdateGroupRequestArgs")]
#[builder(pattern = "mutable")]
#[builder(setter(into, strip_option))]
#[builder(derive(Debug))]
#[builder(build_fn(error = "OpenAIError"))]
pub struct UpdateGroupBody {
pub name: String,
}
#[derive(Debug, Serialize, Deserialize, Builder, Clone, PartialEq)]
#[builder(name = "CreateGroupUserRequestArgs")]
#[builder(pattern = "mutable")]
#[builder(setter(into, strip_option))]
#[builder(derive(Debug))]
#[builder(build_fn(error = "OpenAIError"))]
pub struct CreateGroupUserBody {
pub user_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct GroupUserAssignment {
pub object: String,
pub user_id: String,
pub group_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct GroupUserDeletedResource {
pub object: String,
pub deleted: bool,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct GroupRoleAssignment {
pub object: String,
pub group: Group,
pub role: Role,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct GroupRoleAssignmentListResource {
pub object: String,
pub data: Vec<GroupRoleAssignment>,
pub has_more: bool,
pub next: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Builder, Clone, PartialEq)]
#[builder(name = "AssignGroupRoleRequestArgs")]
#[builder(pattern = "mutable")]
#[builder(setter(into, strip_option))]
#[builder(derive(Debug))]
#[builder(build_fn(error = "OpenAIError"))]
pub struct PublicAssignOrganizationGroupRoleBody {
pub role_id: String,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct UserListResource {
pub object: String,
pub data: Vec<User>,
pub has_more: bool,
pub next: Option<String>,
}