bitwarden_core/auth/api/request/
api_token_request.rs

1use log::debug;
2use serde::{Deserialize, Serialize};
3
4use crate::{
5    auth::{api::response::IdentityTokenResponse, login::LoginError},
6    client::ApiConfigurations,
7};
8
9#[derive(Serialize, Deserialize, Debug)]
10pub struct ApiTokenRequest {
11    scope: String,
12    client_id: String,
13    client_secret: String,
14    #[serde(rename = "deviceType")]
15    device_type: u8,
16    #[serde(rename = "deviceIdentifier")]
17    device_identifier: String,
18    #[serde(rename = "deviceName")]
19    device_name: String,
20    grant_type: String,
21}
22
23impl ApiTokenRequest {
24    pub fn new(client_id: &String, client_secret: &String) -> Self {
25        let obj = Self {
26            scope: "api".to_string(),
27            client_id: client_id.to_string(),
28            client_secret: client_secret.to_string(),
29            device_type: 10,
30            device_identifier: "b86dd6ab-4265-4ddf-a7f1-eb28d5677f33".to_string(),
31            device_name: "firefox".to_string(),
32            grant_type: "client_credentials".to_string(),
33        };
34        debug!("initializing {:?}", obj);
35        obj
36    }
37
38    pub(crate) async fn send(
39        &self,
40        configurations: &ApiConfigurations,
41    ) -> Result<IdentityTokenResponse, LoginError> {
42        super::send_identity_connect_request(configurations, None, &self).await
43    }
44}