idkollen_client/models/
ftn.rs1use chrono::NaiveDate;
2use serde::{Deserialize, Serialize};
3
4use super::common::ApiErrorCode;
5use super::email::Email;
6use super::ssn::Hetu;
7use super::url::Url;
8
9#[must_use]
11#[derive(Debug, Clone, Default, Serialize)]
12#[serde(rename_all = "camelCase")]
13pub struct FtnAuthRequest {
14 #[serde(skip_serializing_if = "Option::is_none")]
16 pub redirect_url: Option<Url>,
17 #[serde(skip_serializing_if = "Option::is_none")]
19 pub request_phone: Option<bool>,
20 #[serde(skip_serializing_if = "Option::is_none")]
22 pub request_email: Option<bool>,
23 #[serde(skip_serializing_if = "Option::is_none")]
25 pub request_address: Option<bool>,
26 #[serde(skip_serializing_if = "Option::is_none")]
28 pub ref_id: Option<String>,
29}
30
31impl FtnAuthRequest {
32 #[inline]
33 pub fn new() -> Self {
34 Self::default()
35 }
36
37 #[inline]
38 pub fn redirect_url(mut self, url: Url) -> Self {
39 self.redirect_url = Some(url);
40 self
41 }
42
43 #[inline]
44 pub fn request_phone(mut self, v: bool) -> Self {
45 self.request_phone = Some(v);
46 self
47 }
48
49 #[inline]
50 pub fn request_email(mut self, v: bool) -> Self {
51 self.request_email = Some(v);
52 self
53 }
54
55 #[inline]
56 pub fn request_address(mut self, v: bool) -> Self {
57 self.request_address = Some(v);
58 self
59 }
60
61 #[inline]
62 pub fn ref_id(mut self, ref_id: impl Into<String>) -> Self {
63 self.ref_id = Some(ref_id.into());
64 self
65 }
66}
67
68#[non_exhaustive]
70#[derive(Debug, Clone, Deserialize)]
71#[serde(tag = "status")]
72pub enum FtnStatus {
73 #[serde(rename = "PENDING")]
74 Pending(FtnPending),
75 #[serde(rename = "COMPLETED")]
76 Completed(FtnCompleted),
77 #[serde(rename = "FAILED")]
78 Failed(FtnFailed),
79}
80
81#[derive(Debug, Clone, Deserialize)]
83#[serde(rename_all = "camelCase")]
84pub struct FtnPending {
85 pub id: String,
86 pub ref_id: Option<String>,
87 pub url: String,
89}
90
91#[derive(Debug, Clone, Deserialize)]
93#[serde(rename_all = "camelCase")]
94pub struct FtnCompleted {
95 pub id: String,
96 pub ref_id: Option<String>,
97 pub ssn: Option<Hetu>,
99 pub name: String,
100 pub given_name: String,
101 pub surname: String,
102 pub phone: Option<String>,
103 pub email: Option<Email>,
104 pub address: Option<String>,
105 pub birth_date: Option<NaiveDate>,
106 pub pid: Option<String>,
107 pub bank_id: Option<String>,
108}
109
110#[derive(Debug, Clone, Deserialize)]
112#[serde(rename_all = "camelCase")]
113pub struct FtnFailed {
114 pub id: String,
115 pub ref_id: Option<String>,
116 pub error: ApiErrorCode,
117}