use super::responses::{
CreateGroupResponse, ListGroupsByIdResponse, ListGroupsByNameResponse, ReadGroupByIdResponse,
ReadGroupByNameResponse,
};
use rustify_derive::Endpoint;
use serde::Serialize;
use std::{collections::HashMap, fmt::Debug};
#[derive(Builder, Debug, Default, Endpoint, Serialize)]
#[endpoint(
path = "identity/group",
method = "POST",
builder = "true",
response = "CreateGroupResponse"
)]
#[builder(setter(into, strip_option), default)]
pub struct CreateGroupRequest {
#[serde(rename = "type")]
pub group_type: Option<String>,
pub metadata: Option<HashMap<String, String>>,
pub policies: Option<Vec<String>>,
pub member_group_ids: Option<Vec<String>>,
pub member_entity_ids: Option<Vec<String>>,
}
#[derive(Builder, Debug, Endpoint)]
#[endpoint(
path = "identity/group/id/{self.id}",
method = "GET",
builder = "true",
response = "ReadGroupByIdResponse"
)]
#[builder(setter(into))]
pub struct ReadGroupByIdRequest {
#[endpoint(skip)]
pub id: String,
}
#[derive(Builder, Debug, Default, Endpoint, Serialize)]
#[endpoint(
path = "identity/group/id/{self.id}",
method = "POST",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct UpdateGroupByIdRequest {
#[endpoint(skip)]
pub id: String,
pub name: Option<String>,
#[serde(rename = "type")]
pub group_type: Option<String>,
pub metadata: Option<HashMap<String, String>>,
pub policies: Option<Vec<String>>,
pub member_group_ids: Option<Vec<String>>,
pub member_entity_ids: Option<Vec<String>>,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "identity/group/id/{self.id}",
method = "DELETE",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct DeleteGroupByIdRequest {
#[endpoint(skip)]
pub id: String,
}
#[derive(Builder, Debug, Endpoint, Default)]
#[endpoint(
path = "identity/group/id",
method = "LIST",
builder = "true",
response = "ListGroupsByIdResponse"
)]
#[builder(setter(into, strip_option), default)]
pub struct ListGroupsByIdRequest {}
#[derive(Builder, Debug, Default, Endpoint, Serialize)]
#[endpoint(
path = "identity/group/name/{self.name}",
method = "POST",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct CreateGroupByNameRequest {
pub name: String,
#[serde(rename = "type")]
pub group_type: Option<String>,
pub metadata: Option<HashMap<String, String>>,
pub policies: Option<Vec<String>>,
pub member_group_ids: Option<Vec<String>>,
pub member_entity_ids: Option<Vec<String>>,
}
#[derive(Builder, Debug, Endpoint)]
#[endpoint(
path = "identity/group/name/{self.name}",
method = "GET",
builder = "true",
response = "ReadGroupByNameResponse"
)]
#[builder(setter(into))]
pub struct ReadGroupByNameRequest {
#[endpoint(skip)]
pub name: String,
}
#[derive(Builder, Debug, Default, Endpoint)]
#[endpoint(
path = "identity/group/name/{self.name}",
method = "DELETE",
builder = "true"
)]
#[builder(setter(into, strip_option), default)]
pub struct DeleteGroupByNameRequest {
#[endpoint(skip)]
pub name: String,
}
#[derive(Builder, Debug, Endpoint, Default)]
#[endpoint(
path = "identity/group/name",
method = "LIST",
builder = "true",
response = "ListGroupsByNameResponse"
)]
#[builder(setter(into, strip_option), default)]
pub struct ListGroupsByNameRequest {}