1use crate::types::{
2 AcsAuthMethod, AuthenticationType, Eci, MessageCategory, MessageVersion, TransStatus,
3 TransStatusReason,
4};
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Serialize, Deserialize)]
12#[serde(rename_all = "camelCase")]
13pub struct ResultsRequest {
14 pub message_type: MessageType,
15 pub message_version: MessageVersion,
16 #[serde(rename = "threeDSServerTransID")]
17 pub three_ds_server_trans_id: String,
18 #[serde(rename = "acsTransID")]
19 pub acs_trans_id: String,
20 #[serde(rename = "dsTransID", skip_serializing_if = "Option::is_none")]
21 pub ds_trans_id: Option<String>,
22 #[serde(rename = "sdkTransID", skip_serializing_if = "Option::is_none")]
23 pub sdk_trans_id: Option<String>,
24 pub message_category: MessageCategory,
25 pub trans_status: TransStatus,
26 #[serde(skip_serializing_if = "Option::is_none")]
27 pub trans_status_reason: Option<TransStatusReason>,
28 #[serde(skip_serializing_if = "Option::is_none")]
29 pub authentication_method: Option<AcsAuthMethod>,
30 #[serde(skip_serializing_if = "Option::is_none")]
31 pub authentication_type: Option<AuthenticationType>,
32 #[serde(skip_serializing_if = "Option::is_none")]
34 pub authentication_value: Option<String>,
35 #[serde(skip_serializing_if = "Option::is_none")]
36 pub eci: Option<Eci>,
37 #[serde(skip_serializing_if = "Option::is_none")]
38 pub interaction_counter: Option<String>,
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub acs_rendering_type: Option<AcsRenderingType>,
41 #[serde(skip_serializing_if = "Option::is_none")]
42 pub message_extension: Option<Vec<MessageExtension>>,
43}
44
45#[derive(Debug, Clone, Serialize, Deserialize)]
47#[serde(rename_all = "camelCase")]
48pub struct AcsRenderingType {
49 pub acs_interface: String,
50 pub acs_ui_template: String,
51}
52
53#[derive(Debug, Clone, Serialize, Deserialize)]
55#[serde(rename_all = "camelCase")]
56pub struct MessageExtension {
57 pub name: String,
58 pub id: String,
59 pub critical_indicator: bool,
60 pub data: serde_json::Value,
61}
62
63#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
64pub enum MessageType {
65 RReq,
66}