use serde::{Deserialize, Serialize};
use super::macros::{apistruct, apply};
#[apply(apistruct!)]
#[derive(Eq)]
pub struct PassportData {
pub data: Vec<EncryptedPassportElement>,
pub credentials: EncryptedCredentials,
}
#[apply(apistruct!)]
#[derive(Eq)]
pub struct PassportFile {
pub file_id: String,
pub file_unique_id: String,
pub file_size: u64,
pub file_date: u64,
}
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum EncryptedPassportElementType {
PersonalDetails,
Passport,
DriverLicense,
IdentityCard,
InternalPassport,
Address,
UtilityBill,
BankStatement,
RentalAgreement,
PassportRegistration,
TemporaryRegistration,
PhoneNumber,
Email,
}
#[apply(apistruct!)]
#[derive(Eq)]
pub struct EncryptedPassportElement {
#[serde(rename = "type")]
pub type_field: EncryptedPassportElementType,
pub data: Option<String>,
pub phone_number: Option<String>,
pub email: Option<String>,
pub files: Option<Vec<PassportFile>>,
pub front_side: Option<PassportFile>,
pub reverse_side: Option<PassportFile>,
pub selfie: Option<PassportFile>,
pub translation: Option<Vec<PassportFile>>,
pub hash: String,
}
#[apply(apistruct!)]
#[derive(Eq)]
pub struct EncryptedCredentials {
pub data: String,
pub hash: String,
pub secret: String,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(tag = "source", rename_all = "snake_case")]
pub enum PassportElementError {
#[serde(rename = "data")]
DataField(PassportElementErrorDataField),
FrontSide(PassportElementErrorFrontSide),
ReverseSide(PassportElementErrorReverseSide),
Selfie(PassportElementErrorSelfie),
File(PassportElementErrorFile),
Files(PassportElementErrorFiles),
TranslationFile(PassportElementErrorTranslationFile),
TranslationFiles(PassportElementErrorTranslationFiles),
Unspecified(PassportElementErrorUnspecified),
}
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum PassportElementErrorDataFieldType {
PersonalDetails,
Passport,
DriverLicense,
IdentityCard,
InternalPassport,
Address,
}
#[apply(apistruct!)]
#[derive(Eq)]
pub struct PassportElementErrorDataField {
#[serde(rename = "type")]
pub type_field: PassportElementErrorDataFieldType,
pub field_name: String,
pub data_hash: String,
pub message: String,
}
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum PassportElementErrorFrontSideType {
Passport,
DriverLicense,
IdentityCard,
InternalPassport,
}
#[apply(apistruct!)]
#[derive(Eq)]
pub struct PassportElementErrorFrontSide {
#[serde(rename = "type")]
pub type_field: PassportElementErrorFrontSideType,
pub file_hash: String,
pub message: String,
}
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum PassportElementErrorReverseSideType {
DriverLicense,
IdentityCard,
}
#[apply(apistruct!)]
#[derive(Eq)]
pub struct PassportElementErrorReverseSide {
#[serde(rename = "type")]
pub type_field: PassportElementErrorReverseSideType,
pub file_hash: String,
pub message: String,
}
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum PassportElementErrorSelfieType {
Passport,
DriverLicense,
IdentityCard,
InternalPassport,
}
#[apply(apistruct!)]
#[derive(Eq)]
pub struct PassportElementErrorSelfie {
#[serde(rename = "type")]
pub type_field: PassportElementErrorSelfieType,
pub file_hash: String,
pub message: String,
}
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum PassportElementErrorFileType {
UtilityBill,
BankStatement,
RentalAgreement,
PassportRegistration,
TemporaryRegistration,
}
#[apply(apistruct!)]
#[derive(Eq)]
pub struct PassportElementErrorFile {
#[serde(rename = "type")]
pub type_field: PassportElementErrorFileType,
pub file_hash: String,
pub message: String,
}
#[apply(apistruct!)]
#[derive(Eq)]
pub struct PassportElementErrorFiles {
#[serde(rename = "type")]
pub type_field: PassportElementErrorFileType,
pub file_hashes: Vec<String>,
pub message: String,
}
#[derive(Clone, Copy, Debug, Serialize, Deserialize, PartialEq, Eq)]
#[serde(rename_all = "snake_case")]
pub enum PassportElementErrorTranslationFileType {
Passport,
DriverLicense,
IdentityCard,
InternalPassport,
UtilityBill,
BankStatement,
RentalAgreement,
PassportRegistration,
TemporaryRegistration,
}
#[apply(apistruct!)]
#[derive(Eq)]
pub struct PassportElementErrorTranslationFile {
#[serde(rename = "type")]
pub type_field: PassportElementErrorTranslationFileType,
pub file_hash: String,
pub message: String,
}
#[apply(apistruct!)]
#[derive(Eq)]
pub struct PassportElementErrorTranslationFiles {
#[serde(rename = "type")]
pub type_field: PassportElementErrorTranslationFileType,
pub file_hashes: Vec<String>,
pub message: String,
}
#[apply(apistruct!)]
#[derive(Eq)]
pub struct PassportElementErrorUnspecified {
#[serde(rename = "type")]
pub type_field: EncryptedPassportElementType,
pub element_hash: String,
pub message: String,
}