Skip to main content

egs_api/api/types/
price.rs

1use serde::{Deserialize, Serialize};
2
3/// Response from the price engine for offer pricing.
4#[allow(missing_docs)]
5#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct PriceResponse {
8    #[serde(default)]
9    pub offers: Vec<OfferPrice>,
10}
11
12/// Price details for a single offer.
13#[allow(missing_docs)]
14#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
15#[serde(rename_all = "camelCase")]
16pub struct OfferPrice {
17    pub offer_id: String,
18    pub namespace: Option<String>,
19    pub effective_date: Option<String>,
20    pub expiry_date: Option<String>,
21    pub current_price: Option<PriceDetail>,
22}
23
24/// Breakdown of a price entry.
25#[allow(missing_docs)]
26#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
27#[serde(rename_all = "camelCase")]
28pub struct PriceDetail {
29    pub currency_code: Option<String>,
30    pub discount_price: Option<i64>,
31    pub original_price: Option<i64>,
32    pub voucher_discount: Option<i64>,
33    pub discount_percentage: Option<i64>,
34    pub currency_info: Option<PriceCurrencyInfo>,
35    pub fmt_price: Option<FormattedPrice>,
36}
37
38/// Currency info embedded in a price response.
39#[allow(missing_docs)]
40#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
41#[serde(rename_all = "camelCase")]
42pub struct PriceCurrencyInfo {
43    pub decimals: Option<i32>,
44}
45
46/// Pre-formatted price strings.
47#[allow(missing_docs)]
48#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
49#[serde(rename_all = "camelCase")]
50pub struct FormattedPrice {
51    pub original_price: Option<String>,
52    pub discount_price: Option<String>,
53    pub intermediate_price: Option<String>,
54}