flutterwave_v3_models/virtual_acct_number/
create_virtual_account.rs

1use 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}