eio_okta_api/v1/groups/
list_groups.rs1use eio_okta_data::v2024_07_0::management::components::{
2 parameters::{QueryAfter, QueryLimit},
3 schemas::Group,
4};
5
6use crate::traits::{IntoRequest, Pagination};
7
8impl crate::Endpoint for ListGroups {
9 const PATH: &'static str = "/api/v1/groups";
10}
11
12impl IntoRequest for ListGroups {
13 type Body = ();
14}
15
16impl Pagination for ListGroups {
17 type Item = Group;
18}
19
20#[derive(Debug, Default, serde::Serialize, serde::Deserialize, clap::Args, validator::Validate)]
21#[serde(rename_all = "camelCase")]
22#[group(skip)]
23#[remain::sorted]
24pub struct ListGroups {
25 #[command(flatten)]
26 #[serde(flatten)]
27 pub after: QueryAfter,
28 #[arg(long)]
29 #[serde(skip_serializing_if = "Option::is_none")]
30 pub expand: Option<Expand>,
31 #[command(flatten)]
32 #[serde(flatten)]
33 pub filter: crate::qol::Filter,
34 #[command(flatten)]
35 #[serde(flatten)]
36 pub limit: QueryLimit,
37 #[arg(long)]
38 #[serde(skip_serializing_if = "Option::is_none")]
39 pub q: Option<String>,
40 #[arg(long)]
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub search: Option<String>,
43 #[arg(long)]
44 #[serde(skip_serializing_if = "Option::is_none")]
45 pub sort_by: Option<String>,
46 #[arg(long)]
47 #[serde(skip_serializing_if = "Option::is_none")]
48 pub sort_order: Option<SortOrder>,
49}
50
51#[derive(Debug, Clone, Copy, serde::Serialize, serde::Deserialize, clap::ValueEnum)]
52#[serde(rename_all = "lowercase")]
53pub enum Expand {
54 App,
55 Stats,
56}
57
58#[derive(Debug, Clone, Copy, serde::Serialize, serde::Deserialize, clap::ValueEnum)]
59#[serde(rename_all = "lowercase")]
60pub enum SortOrder {
61 Asc,
62 Desc,
63}
64
65impl AsRef<()> for ListGroups {
66 fn as_ref(&self) -> &() {
67 &()
68 }
69}