eio_okta_api/v1/groups/
list_groups.rs

1use 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}