use derive_builder::Builder;
use serde::{Deserialize, Serialize};
use crate::error::OpenAIError;
use crate::spec::admin::roles::{OrganizationRole, Role};
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct User {
pub object: String,
pub id: String,
pub name: String,
pub email: String,
pub role: OrganizationRole,
pub added_at: u64,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct UserListResponse {
pub object: String,
pub data: Vec<User>,
pub first_id: Option<String>,
pub last_id: Option<String>,
pub has_more: bool,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq, Builder)]
#[builder(name = "UserRoleUpdateRequestArgs")]
#[builder(pattern = "mutable")]
#[builder(setter(into, strip_option))]
#[builder(derive(Debug))]
#[builder(build_fn(error = "OpenAIError"))]
pub struct UserRoleUpdateRequest {
pub role: OrganizationRole,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct UserDeleteResponse {
pub object: String,
pub id: String,
pub deleted: bool,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct UserRoleAssignment {
pub object: String,
pub user: User,
pub role: Role,
}
#[derive(Debug, Serialize, Deserialize, Clone, PartialEq)]
pub struct UserRoleAssignmentListResource {
pub object: String,
pub data: Vec<UserRoleAssignment>,
pub has_more: bool,
pub next: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Builder, Clone, PartialEq)]
#[builder(name = "AssignUserRoleRequestArgs")]
#[builder(pattern = "mutable")]
#[builder(setter(into, strip_option))]
#[builder(derive(Debug))]
#[builder(build_fn(error = "OpenAIError"))]
pub struct PublicAssignOrganizationUserRoleBody {
pub role_id: String,
}