use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize)]
pub struct AuthenticationData {
pub login_url: String,
pub state: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct EveSsoMetaData {
pub authorization_endpoint: String,
pub code_challenge_methods_supported: Vec<String>,
pub issuer: String,
pub jwks_uri: String,
pub response_types_supported: Vec<String>,
pub revocation_endpoint: String,
pub revocation_endpoint_auth_methods_supported: Vec<String>,
pub subject_types_supported: Vec<String>,
pub token_endpoint: String,
pub token_endpoint_auth_methods_supported: Vec<String>,
pub token_endpoint_auth_signing_alg_values_supported: Vec<String>,
pub id_token_signing_alg_values_supported: Vec<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct EveJwtKeys {
#[serde(rename = "SkipUnresolvedJsonWebKeys")]
pub skip_unresolved_json_web_keys: bool,
pub keys: Vec<EveJwtKey>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(tag = "alg")]
pub enum EveJwtKey {
RS256 {
e: String,
kid: String,
kty: String,
n: String,
r#use: String,
},
ES256 {
crv: String,
kid: String,
kty: String,
r#use: String,
x: String,
y: String,
},
}
#[derive(Debug, Serialize, Deserialize)]
pub struct EveJwtClaims {
pub scp: Option<Vec<String>>,
pub jti: String,
pub kid: String,
pub sub: String,
pub azp: String,
pub tenant: String,
pub tier: String,
pub region: String,
pub aud: Vec<String>,
pub name: String,
pub owner: String,
pub exp: u64,
pub iat: u64,
pub iss: String,
}
#[derive(Debug, serde::Serialize, serde::Deserialize)]
pub struct RefreshTokenResponse {
pub access_token: String,
pub token_type: String,
pub expires_in: i64,
pub refresh_token: String,
}