Skip to main content

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    pub async fn idm_person_application_list(
45        &self,
46        name_or_uuid: &str,
47        query: Option<ScimEntryGetQuery>,
48    ) -> Result<ScimListApplication, ClientError> {
49        self.perform_get_request_query(
50            format!("/scim/v1/Person/{}/Application", name_or_uuid).as_str(),
51            query,
52        )
53        .await
54    }
55
56    pub async fn idm_person_application_password_create(
57        &self,
58        name_or_uuid: &str,
59        request: &ScimApplicationPasswordCreate,
60    ) -> Result<ScimApplicationPassword, ClientError> {
61        self.perform_post_request(
62            format!("/scim/v1/Person/{name_or_uuid}/Application/_create_password",).as_str(),
63            request,
64        )
65        .await
66    }
67
68    pub async fn idm_person_application_password_delete(
69        &self,
70        name_or_uuid: &str,
71        password_id: Uuid,
72    ) -> Result<(), ClientError> {
73        self.perform_delete_request(
74            format!("/scim/v1/Person/{name_or_uuid}/Application/{password_id}",).as_str(),
75        )
76        .await
77    }
78}