use crate::v2_0_1::datatypes::id_token_info_type::IdTokenInfoType;
use validator::Validate;
use crate::v2_0_1::datatypes::id_token_type::IdTokenType;
use crate::v2_0_1::datatypes::ocsp_request_data_type::OCSPRequestDataType;
use crate::v2_0_1::enumerations::authorize_certificate_status_enum_type::AuthorizeCertificateStatusEnumType;
#[derive(serde::Serialize, serde::Deserialize, Validate, Clone, Debug, PartialEq, Default)]
#[serde(rename_all = "camelCase")]
pub struct AuthorizeRequest {
#[validate(length(min = 0, max = 5500))]
#[serde(skip_serializing_if = "Option::is_none")]
pub certificate: Option<String>,
pub id_token: IdTokenType,
#[serde(skip_serializing_if = "Option::is_none")]
pub iso_15118_certificate_hash_data: Option<Vec<OCSPRequestDataType>>,
}
#[derive(serde::Serialize, serde::Deserialize, Clone, Debug, PartialEq, Default)]
#[serde(rename_all = "camelCase")]
pub struct AuthorizeResponse {
#[serde(skip_serializing_if = "Option::is_none")]
pub certificate_status: Option<AuthorizeCertificateStatusEnumType>,
pub id_token_info: IdTokenInfoType,
}