kanidm_client/
scim.rs

1use crate::{ClientError, KanidmClient};
2use kanidm_proto::scim_v1::{ScimEntryGeneric, ScimEntryGetQuery, ScimSyncRequest, ScimSyncState};
3
4impl KanidmClient {
5    pub async fn scim_v1_sync_status(&self) -> Result<ScimSyncState, ClientError> {
6        self.perform_get_request("/scim/v1/Sync").await
7    }
8
9    pub async fn scim_v1_sync_update(
10        &self,
11        scim_sync_request: &ScimSyncRequest,
12    ) -> Result<(), ClientError> {
13        self.perform_post_request("/scim/v1/Sync", scim_sync_request)
14            .await
15    }
16
17    /// Retrieve a Generic SCIM Entry as a JSON Value. This can retrieve any
18    /// type of entry that Kanidm supports.
19    pub async fn scim_v1_entry_get(
20        &self,
21        name_or_uuid: &str,
22        query: Option<ScimEntryGetQuery>,
23    ) -> Result<ScimEntryGeneric, ClientError> {
24        self.perform_get_request_query(format!("/scim/v1/Entry/{}", name_or_uuid).as_str(), query)
25            .await
26    }
27
28    /// Retrieve a Person as a SCIM JSON Value.
29    pub async fn scim_v1_person_get(
30        &self,
31        name_or_uuid: &str,
32        query: Option<ScimEntryGetQuery>,
33    ) -> Result<ScimEntryGeneric, ClientError> {
34        self.perform_get_request_query(format!("/scim/v1/Person/{}", name_or_uuid).as_str(), query)
35            .await
36    }
37}