Skip to main content

keycloak/rest/generated_rest/
client_attribute_certificate.rs

1use super::*;
2
3impl<TS: KeycloakTokenSupplier> KeycloakAdmin<TS> {
4    // <h4>Client Attribute Certificate</h4>
5
6    /// Get key info
7    ///
8    /// Parameters:
9    ///
10    /// - `realm`: realm name (not id!)
11    /// - `client_uuid`: id of client (not client-id!)
12    /// - `attr`
13    ///
14    /// Resource: `Client Attribute Certificate`
15    ///
16    /// `GET /admin/realms/{realm}/clients/{client_uuid}/certificates/{attr}`
17    ///
18    /// Documentation: <https://www.keycloak.org/docs-api/26.5.2/rest-api/index.html#_get_adminrealmsrealmclientsclient_uuidcertificatesattr>
19    ///
20    /// REST method: `GET /admin/realms/{realm}/clients/{client-uuid}/certificates/{attr}`
21    pub async fn realm_clients_with_client_uuid_certificates_with_attr_get(
22        &self,
23        realm: &str,
24        client_uuid: &str,
25        attr: &str,
26    ) -> Result<CertificateRepresentation, KeycloakError> {
27        let realm = p(realm);
28        let client_uuid = p(client_uuid);
29        let attr = p(attr);
30        let builder = self
31            .client
32            .get(format!(
33                "{}/admin/realms/{realm}/clients/{client_uuid}/certificates/{attr}",
34                self.url
35            ))
36            .bearer_auth(self.token_supplier.get(&self.url).await?);
37        let response = builder.send().await?;
38        Ok(error_check(response).await?.json().await?)
39    }
40
41    /// Get a keystore file for the client, containing private key and public certificate
42    ///
43    /// Parameters:
44    ///
45    /// - `realm`: realm name (not id!)
46    /// - `client_uuid`: id of client (not client-id!)
47    /// - `attr`
48    /// - `body`
49    ///
50    /// Resource: `Client Attribute Certificate`
51    ///
52    /// `POST /admin/realms/{realm}/clients/{client_uuid}/certificates/{attr}/download`
53    ///
54    /// Documentation: <https://www.keycloak.org/docs-api/26.5.2/rest-api/index.html#_post_adminrealmsrealmclientsclient_uuidcertificatesattrdownload>
55    ///
56    /// REST method: `POST /admin/realms/{realm}/clients/{client-uuid}/certificates/{attr}/download`
57    pub async fn realm_clients_with_client_uuid_certificates_with_attr_download_post(
58        &self,
59        realm: &str,
60        client_uuid: &str,
61        attr: &str,
62        body: KeyStoreConfig,
63    ) -> Result<TypeString, KeycloakError> {
64        let realm = p(realm);
65        let client_uuid = p(client_uuid);
66        let attr = p(attr);
67        let builder = self
68            .client
69            .post(format!(
70                "{}/admin/realms/{realm}/clients/{client_uuid}/certificates/{attr}/download",
71                self.url
72            ))
73            .json(&body)
74            .bearer_auth(self.token_supplier.get(&self.url).await?);
75        let response = builder.send().await?;
76        Ok(error_check(response).await?.text().await.map(From::from)?)
77    }
78
79    /// Generate a new certificate with new key pair
80    ///
81    /// Parameters:
82    ///
83    /// - `realm`: realm name (not id!)
84    /// - `client_uuid`: id of client (not client-id!)
85    /// - `attr`
86    ///
87    /// Resource: `Client Attribute Certificate`
88    ///
89    /// `POST /admin/realms/{realm}/clients/{client_uuid}/certificates/{attr}/generate`
90    ///
91    /// Documentation: <https://www.keycloak.org/docs-api/26.5.2/rest-api/index.html#_post_adminrealmsrealmclientsclient_uuidcertificatesattrgenerate>
92    ///
93    /// REST method: `POST /admin/realms/{realm}/clients/{client-uuid}/certificates/{attr}/generate`
94    pub async fn realm_clients_with_client_uuid_certificates_with_attr_generate_post(
95        &self,
96        realm: &str,
97        client_uuid: &str,
98        attr: &str,
99    ) -> Result<CertificateRepresentation, KeycloakError> {
100        let realm = p(realm);
101        let client_uuid = p(client_uuid);
102        let attr = p(attr);
103        let builder = self
104            .client
105            .post(format!(
106                "{}/admin/realms/{realm}/clients/{client_uuid}/certificates/{attr}/generate",
107                self.url
108            ))
109            .bearer_auth(self.token_supplier.get(&self.url).await?);
110        let response = builder.send().await?;
111        Ok(error_check(response).await?.json().await?)
112    }
113
114    /// Generate a new keypair and certificate, and get the private key file
115    ///
116    /// Generates a keypair and certificate and serves the private key in a specified keystore format.
117    /// Only generated public certificate is saved in Keycloak DB - the private key is not.
118    ///
119    /// Parameters:
120    ///
121    /// - `realm`: realm name (not id!)
122    /// - `client_uuid`: id of client (not client-id!)
123    /// - `attr`
124    /// - `body`
125    ///
126    /// Resource: `Client Attribute Certificate`
127    ///
128    /// `POST /admin/realms/{realm}/clients/{client_uuid}/certificates/{attr}/generate-and-download`
129    ///
130    /// Documentation: <https://www.keycloak.org/docs-api/26.5.2/rest-api/index.html#_post_adminrealmsrealmclientsclient_uuidcertificatesattrgenerate_and_download>
131    ///
132    /// REST method: `POST /admin/realms/{realm}/clients/{client-uuid}/certificates/{attr}/generate-and-download`
133    pub async fn realm_clients_with_client_uuid_certificates_with_attr_generate_and_download_post(
134        &self,
135        realm: &str,
136        client_uuid: &str,
137        attr: &str,
138        body: KeyStoreConfig,
139    ) -> Result<TypeString, KeycloakError> {
140        let realm = p(realm);
141        let client_uuid = p(client_uuid);
142        let attr = p(attr);
143        let builder = self
144            .client
145            .post(format!(
146                "{}/admin/realms/{realm}/clients/{client_uuid}/certificates/{attr}/generate-and-download",
147                self.url
148            ))
149            .json(&body)
150            .bearer_auth(self.token_supplier.get(&self.url).await?);
151        let response = builder.send().await?;
152        Ok(error_check(response).await?.text().await.map(From::from)?)
153    }
154
155    /// Upload certificate and eventually private key
156    ///
157    /// Parameters:
158    ///
159    /// - `realm`: realm name (not id!)
160    /// - `client_uuid`: id of client (not client-id!)
161    /// - `attr`
162    ///
163    /// Resource: `Client Attribute Certificate`
164    ///
165    /// `POST /admin/realms/{realm}/clients/{client_uuid}/certificates/{attr}/upload`
166    ///
167    /// Documentation: <https://www.keycloak.org/docs-api/26.5.2/rest-api/index.html#_post_adminrealmsrealmclientsclient_uuidcertificatesattrupload>
168    ///
169    /// REST method: `POST /admin/realms/{realm}/clients/{client-uuid}/certificates/{attr}/upload`
170    pub async fn realm_clients_with_client_uuid_certificates_with_attr_upload_post(
171        &self,
172        realm: &str,
173        client_uuid: &str,
174        attr: &str,
175    ) -> Result<CertificateRepresentation, KeycloakError> {
176        let realm = p(realm);
177        let client_uuid = p(client_uuid);
178        let attr = p(attr);
179        let builder = self
180            .client
181            .post(format!(
182                "{}/admin/realms/{realm}/clients/{client_uuid}/certificates/{attr}/upload",
183                self.url
184            ))
185            .bearer_auth(self.token_supplier.get(&self.url).await?);
186        let response = builder.send().await?;
187        Ok(error_check(response).await?.json().await?)
188    }
189
190    /// Upload only certificate, not private key
191    ///
192    /// Parameters:
193    ///
194    /// - `realm`: realm name (not id!)
195    /// - `client_uuid`: id of client (not client-id!)
196    /// - `attr`
197    ///
198    /// Resource: `Client Attribute Certificate`
199    ///
200    /// `POST /admin/realms/{realm}/clients/{client_uuid}/certificates/{attr}/upload-certificate`
201    ///
202    /// Documentation: <https://www.keycloak.org/docs-api/26.5.2/rest-api/index.html#_post_adminrealmsrealmclientsclient_uuidcertificatesattrupload_certificate>
203    ///
204    /// REST method: `POST /admin/realms/{realm}/clients/{client-uuid}/certificates/{attr}/upload-certificate`
205    pub async fn realm_clients_with_client_uuid_certificates_with_attr_upload_certificate_post(
206        &self,
207        realm: &str,
208        client_uuid: &str,
209        attr: &str,
210    ) -> Result<CertificateRepresentation, KeycloakError> {
211        let realm = p(realm);
212        let client_uuid = p(client_uuid);
213        let attr = p(attr);
214        let builder = self
215            .client
216            .post(format!(
217                "{}/admin/realms/{realm}/clients/{client_uuid}/certificates/{attr}/upload-certificate",
218                self.url
219            ))
220            .bearer_auth(self.token_supplier.get(&self.url).await?);
221        let response = builder.send().await?;
222        Ok(error_check(response).await?.json().await?)
223    }
224
225    /// Uploads a certificate, prepares the jwks or public key associated, and returns the certificate representation.
226    ///
227    /// Parameters:
228    ///
229    /// - `realm`: realm name (not id!)
230    ///
231    /// Resource: `Client Attribute Certificate`
232    ///
233    /// `POST /admin/realms/{realm}/identity-provider/upload-certificate`
234    ///
235    /// Documentation: <https://www.keycloak.org/docs-api/26.5.2/rest-api/index.html#_post_adminrealmsrealmidentity_providerupload_certificate>
236    pub async fn realm_identity_provider_upload_certificate_post(
237        &self,
238        realm: &str,
239    ) -> Result<CertificateRepresentation, KeycloakError> {
240        let realm = p(realm);
241        let builder = self
242            .client
243            .post(format!(
244                "{}/admin/realms/{realm}/identity-provider/upload-certificate",
245                self.url
246            ))
247            .bearer_auth(self.token_supplier.get(&self.url).await?);
248        let response = builder.send().await?;
249        Ok(error_check(response).await?.json().await?)
250    }
251}
252// not all paths processed
253// left 249