use rustify_derive::Endpoint;
use std::{collections::HashMap, fmt::Debug};
use super::responses::{
CreateEntityResponse, ListEntitiesByIdResponse, ListEntitiesByNameResponse,
ReadEntityByIdResponse, ReadEntityByNameResponse,
};
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "identity/entity",
method = "POST",
builder = "true",
response = "CreateEntityResponse"
)]
#[builder(setter(into, strip_option), default)]
pub struct CreateEntityRequest {
pub name: Option<String>,
pub metadata: Option<HashMap<String, String>>,
pub policies: Option<Vec<String>>,
pub disabled: Option<bool>,
}
#[derive(Builder, Debug, Endpoint)]
#[endpoint(
path = "identity/entity/id/{self.id}",
method = "GET",
builder = "true",
response = "ReadEntityByIdResponse"
)]
#[builder(setter(into))]
pub struct ReadEntityByIdRequest {
#[endpoint(skip)]
pub id: String,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "identity/entity/id/{self.id}",
method = "POST",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct UpdateEntityByIdRequest {
#[endpoint(skip)]
pub id: String,
pub name: Option<String>,
pub metadata: Option<HashMap<String, String>>,
pub policies: Option<Vec<String>>,
pub disabled: Option<bool>,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "identity/entity/id/{self.id}",
method = "DELETE",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct DeleteEntityByIdRequest {
#[endpoint(skip)]
pub id: String,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "identity/entity/batch-delete",
method = "POST",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct BatchDeleteRequest {
pub entity_ids: Vec<String>,
}
#[derive(Builder, Debug, Endpoint, Default)]
#[endpoint(
path = "identity/entity/id",
method = "LIST",
builder = "true",
response = "ListEntitiesByIdResponse"
)]
#[builder(setter(into, strip_option), default)]
pub struct ListEntitiesByIdRequest {}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "identity/entity/name/{self.name}",
method = "POST",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct CreateEntityByNameRequest {
#[endpoint(skip)]
pub name: String,
pub metadata: Option<HashMap<String, String>>,
pub policies: Option<Vec<String>>,
pub disabled: Option<bool>,
}
#[derive(Builder, Debug, Endpoint, Default)]
#[endpoint(
path = "identity/entity/name/{self.name}",
method = "GET",
builder = "true",
response = "ReadEntityByNameResponse"
)]
#[builder(setter(into, strip_option), default)]
pub struct ReadEntityByNameRequest {
#[endpoint(skip)]
pub name: String,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "identity/entity/name/{self.name}",
method = "DELETE",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct DeleteEntityByNameRequest {
#[endpoint(skip)]
pub name: String,
}
#[derive(Builder, Debug, Endpoint, Default)]
#[endpoint(
path = "identity/entity/name",
method = "LIST",
builder = "true",
response = "ListEntitiesByNameResponse"
)]
#[builder(setter(into, strip_option), default)]
pub struct ListEntitiesByNameRequest {}
#[derive(Builder, Debug, Endpoint, Default)]
#[endpoint(path = "identity/entity/merge", method = "POST", builder = "true")]
#[builder(setter(into, strip_option), default)]
pub struct MergeEntitiesRequest {
pub from_entity_ids: Vec<String>,
pub to_entity_id: String,
pub force: Option<bool>,
pub conflicting_alias_ids_to_keep: Option<String>,
}