use api_builder::{Endpoint, api_endpoint};
use serde::{Deserialize, Serialize};
use time::OffsetDateTime;
use typed_builder::TypedBuilder;
#[derive(
Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default, Serialize, TypedBuilder,
)]
#[builder(field_defaults(setter(into)))]
pub struct CreateUser<'a> {
#[serde(skip)]
pub project_id: &'a str,
pub identifier: Option<&'a str>,
#[serde(with = "time::serde::timestamp::option")]
#[builder(default, setter(strip_option))]
pub auth_expire: Option<OffsetDateTime>,
#[builder(default, setter(strip_option))]
pub note: Option<&'a str>,
#[builder(default, setter(strip_option))]
pub discord_id: Option<&'a str>,
#[builder(default, setter(strip_option))]
pub key_days: Option<u32>,
}
#[api_endpoint(method = POST, path = format!("/v3/projects/{}/users", self.project_id), self_as_body = "application/json")]
impl Endpoint for CreateUser<'_> {}
#[derive(Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug, Default, Deserialize)]
pub struct CreateUserResponse {
pub user_key: String,
}