kanidm_client/
application.rs

1use crate::{ClientError, KanidmClient};
2use kanidm_proto::scim_v1::{
3    client::{ScimEntryApplication, ScimEntryApplicationPost, ScimListApplication},
4    ScimApplicationPassword, ScimApplicationPasswordCreate, ScimEntryGetQuery,
5};
6use uuid::Uuid;
7
8impl KanidmClient {
9    /// Delete an application
10    pub async fn idm_application_delete(&self, id: &str) -> Result<(), ClientError> {
11        self.perform_delete_request(format!("/scim/v1/Application/{id}").as_str())
12            .await
13    }
14
15    /// Create an application
16    pub async fn idm_application_create(
17        &self,
18        application: &ScimEntryApplicationPost,
19    ) -> Result<ScimEntryApplication, ClientError> {
20        self.perform_post_request("/scim/v1/Application", application)
21            .await
22    }
23
24    pub async fn idm_application_list(
25        &self,
26        query: Option<ScimEntryGetQuery>,
27    ) -> Result<ScimListApplication, ClientError> {
28        self.perform_get_request_query("/scim/v1/Application", query)
29            .await
30    }
31
32    pub async fn idm_application_get(
33        &self,
34        name_or_uuid: &str,
35        query: Option<ScimEntryGetQuery>,
36    ) -> Result<ScimEntryApplication, ClientError> {
37        self.perform_get_request_query(
38            format!("/scim/v1/Application/{name_or_uuid}").as_str(),
39            query,
40        )
41        .await
42    }
43
44    /*
45    pub async fn idm_person_application_list(
46        &self,
47        name_or_uuid: &str,
48        query: Option<ScimEntryGetQuery>,
49    ) -> Result<Vec<()>, ClientError> {
50        self.perform_get_request(
51            format!("/scim/v1/Person/{}/Application", name_or_uuid).as_str(),
52            query
53        )
54            .await
55    }
56    */
57
58    pub async fn idm_application_password_create(
59        &self,
60        name_or_uuid: &str,
61        request: &ScimApplicationPasswordCreate,
62    ) -> Result<ScimApplicationPassword, ClientError> {
63        self.perform_post_request(
64            format!("/scim/v1/Person/{name_or_uuid}/Application/_create_password",).as_str(),
65            request,
66        )
67        .await
68    }
69
70    pub async fn idm_application_password_delete(
71        &self,
72        name_or_uuid: &str,
73        password_id: Uuid,
74    ) -> Result<(), ClientError> {
75        self.perform_delete_request(
76            format!("/scim/v1/Person/{name_or_uuid}/Application/{password_id}",).as_str(),
77        )
78        .await
79    }
80}