eio_okta_api/v1/groups/
assign_user_to_group.rs1use clap::Args;
2use eio_okta_data::v2024_07_0::management::components::parameters::{PathGroupId, PathUserId};
3use iri_string::template::Context;
4use serde::{Deserialize, Serialize};
5use validator::Validate;
6
7use crate::{
8 Endpoint,
9 traits::{IntoRequest, Response},
10};
11
12impl Endpoint for AssignUserToGroup {
13 const PATH: &'static str = "/api/v1/groups/{groupId}/users/{userId}";
14
15 fn context(&self) -> impl Context {
16 self.clone()
17 }
18}
19
20impl IntoRequest for AssignUserToGroup {
21 const METHOD: http::Method = http::Method::PUT;
22 type Body = ();
23}
24
25impl Response for AssignUserToGroup {
26 type Body = ();
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize, Args, Validate)]
30#[remain::sorted]
31pub struct AssignUserToGroup {
32 #[command(flatten)]
33 #[serde(flatten)]
34 pub group: PathGroupId,
35 #[command(flatten)]
36 #[serde(flatten)]
37 pub user: PathUserId,
38}
39
40impl AsRef<()> for AssignUserToGroup {
41 fn as_ref(&self) -> &() {
42 &()
43 }
44}
45
46impl Context for AssignUserToGroup {
47 fn visit<V: iri_string::template::context::Visitor>(&self, visitor: V) -> V::Result {
48 match visitor.var_name().as_str() {
49 "groupId" => visitor.visit_string(&self.group.group_id),
50 "userId" => visitor.visit_string(&self.user.user_id),
51 _ => visitor.visit_undefined(),
52 }
53 }
54}