use super::Audience;
use serde::{Deserialize, Serialize};
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct Address {
#[serde(skip_serializing_if = "Option::is_none")]
pub formatted: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub street_address: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub locality: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub region: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub postal_code: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub country: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct AuthClaims {
#[serde(rename = "iss", skip_serializing_if = "Option::is_none")]
pub issuer: Option<String>,
#[serde(rename = "sub", skip_serializing_if = "Option::is_none")]
pub subject: Option<String>,
#[serde(rename = "aud", skip_serializing_if = "Option::is_none")]
pub audience: Option<Audience>,
#[serde(rename = "exp", skip_serializing_if = "Option::is_none")]
pub expiration: Option<i64>,
#[serde(rename = "nbf", skip_serializing_if = "Option::is_none")]
pub not_before: Option<i64>,
#[serde(rename = "iat", skip_serializing_if = "Option::is_none")]
pub issued_at: Option<i64>,
#[serde(rename = "jti", skip_serializing_if = "Option::is_none")]
pub jwt_id: Option<String>,
#[serde(rename = "scope", skip_serializing_if = "Option::is_none")]
pub scope: Option<String>,
#[serde(rename = "client_id", skip_serializing_if = "Option::is_none")]
pub client_id: Option<String>,
#[serde(rename = "cnf", skip_serializing_if = "Option::is_none")]
pub confirmation: Option<serde_json::Value>,
#[serde(rename = "auth_time", skip_serializing_if = "Option::is_none")]
pub auth_time: Option<i64>,
#[serde(rename = "azp", skip_serializing_if = "Option::is_none")]
pub authorized_party: Option<String>,
#[serde(rename = "act", skip_serializing_if = "Option::is_none")]
pub actor: Option<serde_json::Value>,
#[serde(rename = "sid", skip_serializing_if = "Option::is_none")]
pub session_id: Option<String>,
#[serde(rename = "name", skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(rename = "given_name", skip_serializing_if = "Option::is_none")]
pub given_name: Option<String>,
#[serde(rename = "family_name", skip_serializing_if = "Option::is_none")]
pub family_name: Option<String>,
#[serde(rename = "middle_name", skip_serializing_if = "Option::is_none")]
pub middle_name: Option<String>,
#[serde(rename = "nickname", skip_serializing_if = "Option::is_none")]
pub nickname: Option<String>,
#[serde(rename = "preferred_username", skip_serializing_if = "Option::is_none")]
pub preferred_username: Option<String>,
#[serde(rename = "profile", skip_serializing_if = "Option::is_none")]
pub profile: Option<String>,
#[serde(rename = "picture", skip_serializing_if = "Option::is_none")]
pub picture: Option<String>,
#[serde(rename = "website", skip_serializing_if = "Option::is_none")]
pub website: Option<String>,
#[serde(rename = "email", skip_serializing_if = "Option::is_none")]
pub email: Option<String>,
#[serde(rename = "email_verified", skip_serializing_if = "Option::is_none")]
pub email_verified: Option<bool>,
#[serde(rename = "gender", skip_serializing_if = "Option::is_none")]
pub gender: Option<String>,
#[serde(rename = "birthdate", skip_serializing_if = "Option::is_none")]
pub birthdate: Option<String>,
#[serde(rename = "zoneinfo", skip_serializing_if = "Option::is_none")]
pub zoneinfo: Option<String>,
#[serde(rename = "locale", skip_serializing_if = "Option::is_none")]
pub locale: Option<String>,
#[serde(rename = "phone_number", skip_serializing_if = "Option::is_none")]
pub phone_number: Option<String>,
#[serde(
rename = "phone_number_verified",
skip_serializing_if = "Option::is_none"
)]
pub phone_number_verified: Option<bool>,
#[serde(rename = "address", skip_serializing_if = "Option::is_none")]
pub address: Option<Address>,
#[serde(rename = "updated_at", skip_serializing_if = "Option::is_none")]
pub updated_at: Option<i64>,
#[serde(rename = "oid", skip_serializing_if = "Option::is_none")]
pub object_id: Option<String>,
#[serde(rename = "tid", skip_serializing_if = "Option::is_none")]
pub tenant_id: Option<String>,
#[serde(rename = "upn", skip_serializing_if = "Option::is_none")]
pub user_principal_name: Option<String>,
#[serde(rename = "roles", skip_serializing_if = "Option::is_none")]
pub roles: Option<Vec<String>>,
#[serde(rename = "groups", skip_serializing_if = "Option::is_none")]
pub groups: Option<Vec<String>>,
#[serde(rename = "appid", skip_serializing_if = "Option::is_none")]
pub application_id: Option<String>,
#[serde(rename = "unique_name", skip_serializing_if = "Option::is_none")]
pub unique_name: Option<String>,
#[serde(rename = "ver", skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "snake_case")]
pub struct IntrospectionResponse {
pub active: bool,
#[serde(default)]
pub scope: Option<String>,
#[serde(default)]
pub client_id: Option<String>,
#[serde(default)]
pub username: Option<String>,
#[serde(default)]
pub token_type: Option<String>,
#[serde(rename = "exp", skip_serializing_if = "Option::is_none")]
pub expiration: Option<i64>,
#[serde(rename = "iat", skip_serializing_if = "Option::is_none")]
pub issued_at: Option<i64>,
#[serde(rename = "nbf", skip_serializing_if = "Option::is_none")]
pub not_before: Option<i64>,
#[serde(rename = "sub", skip_serializing_if = "Option::is_none")]
pub subject: Option<String>,
#[serde(rename = "aud", skip_serializing_if = "Option::is_none")]
pub audience: Option<Audience>,
#[serde(rename = "iss", skip_serializing_if = "Option::is_none")]
pub issuer: Option<String>,
#[serde(rename = "jti", skip_serializing_if = "Option::is_none")]
pub jwt_id: Option<String>,
}