origin_sdk/protocol/
commerce.rs

1use serde::{Deserialize, Serialize};
2
3use crate::protocol::entitlements::Entitlement;
4
5#[derive(Debug, Serialize, Deserialize)]
6pub struct Checkout {
7    #[serde(rename = "@UserId")]
8    pub user_id: u64,
9    #[serde(rename = "@Currency")]
10    pub currency: String,
11    #[serde(rename = "Offers", default)]
12    pub offers: Vec<String>,
13}
14
15#[derive(Debug, Serialize, Deserialize)]
16pub struct GetWalletBalance {
17    #[serde(rename = "@UserId")]
18    pub user_id: u64,
19    #[serde(rename = "@Currency")]
20    pub currency: String,
21}
22
23#[derive(Debug, Serialize, Deserialize)]
24pub struct GetWalletBalanceResponse {
25    #[serde(rename = "@Balance")]
26    pub balance: i64,
27}
28
29#[derive(Debug, Serialize, Deserialize)]
30pub struct Offer {
31    #[serde(rename = "@Type")]
32    pub r#type: String,
33    #[serde(rename = "@OfferId")]
34    pub offer_id: String,
35    #[serde(rename = "@Name")]
36    pub name: String,
37    #[serde(rename = "@Description")]
38    pub description: String,
39    #[serde(rename = "@ImageId")]
40    pub image_id: String,
41    #[serde(rename = "@GameDistributionSub")]
42    pub game_distribution_sub_type: String,
43    #[serde(rename = "@bIsOwned")]
44    pub b_is_owned: bool,
45    #[serde(rename = "@bHidden")]
46    pub b_hidden: bool,
47    #[serde(rename = "@bCanPurchase")]
48    pub b_can_purchase: bool,
49    #[serde(rename = "@PurchaseDate")]
50    pub purchase_date: String,
51    #[serde(rename = "@DownloadDate")]
52    pub download_date: String,
53    #[serde(rename = "@PlayableDate")]
54    pub playable_date: String,
55    #[serde(rename = "@UseEndDate")]
56    pub use_end_date: String,
57    #[serde(rename = "@DownloadSize")]
58    pub download_size: u64,
59    #[serde(rename = "@Currency")]
60    pub currency: String,
61    #[serde(rename = "@bIsDiscounted")]
62    pub b_is_discounted: bool,
63    #[serde(rename = "@Price")]
64    pub price: f64,
65    #[serde(rename = "@LocalizedPrice")]
66    pub localized_price: String,
67    #[serde(rename = "@OriginalPrice")]
68    pub original_price: f64,
69    #[serde(rename = "@LocalizedOriginalPrice")]
70    pub localized_original_price: String,
71    #[serde(rename = "@InventoryCap")]
72    pub inventory_cap: i32,
73    #[serde(rename = "@InventorySold")]
74    pub inventory_sold: i32,
75    #[serde(rename = "@InventoryAvailable")]
76    pub inventory_available: i32,
77    #[serde(rename = "Entitlements", default)]
78    pub entitlements: Vec<Entitlement>,
79}
80
81#[derive(Debug, Serialize, Deserialize)]
82pub struct PurchaseEvent {
83    #[serde(rename = "@manifest")]
84    pub manifest: String,
85}
86
87#[derive(Debug, Serialize, Deserialize)]
88pub struct QueryOffers {
89    #[serde(rename = "@UserId")]
90    pub user_id: u64,
91    #[serde(rename = "FilterCategories", default)]
92    pub filter_categories: Vec<String>,
93    #[serde(rename = "FilterMasterTitleIds", default)]
94    pub filter_master_title_ids: Vec<String>,
95    #[serde(rename = "FilterOffers", default)]
96    pub filter_offers: Vec<String>,
97}
98
99#[derive(Debug, Serialize, Deserialize)]
100pub struct QueryOffersResponse {
101    #[serde(rename = "Offer", default)]
102    pub offers: Vec<Offer>,
103}