flutterwave_v3_models/virtual_acct_number/
create_virtual_account.rs1use super::virt_res_acct_data::VirtualAcctResAcctData;
2use crate::{
3 common::payload::Payload,
4 fwcall::{FwCall, ToFwCall},
5};
6use serde::{Deserialize, Serialize};
7use std::borrow::Cow;
8use validator::Validate;
9
10#[derive(Debug, Serialize, Deserialize, Validate)]
11pub struct VirtualAcctCreationReq {
12 #[validate(email)]
13 pub email: String,
14 pub bvn: String,
15 pub amount: Option<i32>,
16 pub tx_ref: Option<String>,
17 pub is_permanent: Option<bool>,
18 pub narration: Option<String>,
19}
20
21#[derive(Debug, Serialize, Deserialize, Validate)]
22pub struct VirtualAcctCreationRes {
23 pub status: String,
24 pub message: String,
25 pub data: VirtualAcctResAcctData,
26}
27
28#[derive(Debug, Serialize, Deserialize, Validate)]
29pub struct VirtualAcctBulkCreationReq {
30 pub accounts: i32,
31 #[validate(email)]
32 pub email: String,
33 pub is_permanent: bool,
34 pub frequency: Option<i32>,
35 pub tx_ref: Option<String>,
36 pub amount: Option<i32>,
37}
38
39#[derive(Debug, Serialize, Deserialize)]
40pub struct VirtualAcctBulkCreationRes {
41 pub status: String,
42 pub message: String,
43 pub data: VirtualAcctBulkCreateResData,
44}
45
46#[derive(Debug, Serialize, Deserialize)]
47pub struct VirtualAcctBulkCreateResData {
48 pub batch_id: String,
49 pub response_code: String,
50 pub response_message: String,
51}
52
53impl<'a> ToFwCall<'a> for VirtualAcctCreationReq {
54 type ApiRequest = Self;
55
56 type ApiResponse = VirtualAcctCreationRes;
57
58 fn get_call(self) -> FwCall<'a, Self::ApiRequest, Self::ApiResponse> {
59 FwCall::new(
60 Cow::Borrowed("/v3/virtual-account-numbers"),
61 reqwest::Method::POST,
62 Some(Payload::Plain(self)),
63 )
64 }
65}
66
67impl<'a> ToFwCall<'a> for VirtualAcctBulkCreationReq {
68 type ApiRequest = Self;
69
70 type ApiResponse = VirtualAcctBulkCreationRes;
71
72 fn get_call(self) -> FwCall<'a, Self::ApiRequest, Self::ApiResponse> {
73 FwCall::new(
74 Cow::Borrowed("/v3/bulk-virtual-account-numbers"),
75 reqwest::Method::POST,
76 Some(Payload::Plain(self)),
77 )
78 }
79}