Skip to main content

origin_sdk/protocol/
commerce.rs

1use serde::{Deserialize, Serialize};
2
3use crate::protocol::entitlements::Entitlement;
4
5#[derive(Debug, Serialize, Deserialize)]
6pub struct Catalog {
7    #[serde(rename = "@Name")]
8    pub name: String,
9    #[serde(rename = "@Status")]
10    pub status: String,
11    #[serde(rename = "@Currency")]
12    pub currency_type: String,
13    #[serde(rename = "@Group")]
14    pub group: String,
15    #[serde(rename = "@CatalogId")]
16    pub catalog_id: u64,
17    #[serde(rename = "Category", default)]
18    pub categories: Vec<Category>,
19}
20
21#[derive(Debug, Serialize, Deserialize)]
22pub struct Category {
23    #[serde(rename = "@Type")]
24    pub r#type: String,
25    #[serde(rename = "@CategoryId")]
26    pub category_id: String,
27    #[serde(rename = "@ParentId")]
28    pub parent_id: String,
29    #[serde(rename = "@Name")]
30    pub name: String,
31    #[serde(rename = "@Description")]
32    pub description: String,
33    #[serde(rename = "@MostPopular")]
34    pub most_popular: i32,
35    #[serde(rename = "@ImageId")]
36    pub image_id: String,
37    #[serde(rename = "Category", default)]
38    pub categories: Vec<Category>,
39    #[serde(rename = "Offer", default)]
40    pub offers: Vec<Offer>,
41}
42
43#[derive(Debug, Serialize, Deserialize)]
44pub struct Checkout {
45    #[serde(rename = "@UserId")]
46    pub user_id: u64,
47    #[serde(rename = "@Currency")]
48    pub currency: String,
49    #[serde(rename = "Offers", default)]
50    pub offers: Vec<String>,
51}
52
53#[derive(Debug, Serialize, Deserialize)]
54pub struct DetermineCommerceCurrency {}
55
56#[derive(Debug, Serialize, Deserialize)]
57pub struct Store {
58    #[serde(rename = "Catalog", default)]
59    pub catalogs: Vec<Catalog>,
60    #[serde(rename = "@Name")]
61    pub name: String,
62    #[serde(rename = "@Title")]
63    pub title: String,
64    #[serde(rename = "@Group")]
65    pub group: String,
66    #[serde(rename = "@Status")]
67    pub status: String,
68    #[serde(rename = "@DefaultCurrency")]
69    pub default_currency: String,
70    #[serde(rename = "@StoreId")]
71    pub store_id: u64,
72    #[serde(rename = "@IsDemoStore")]
73    pub is_demo_store: bool,
74}
75
76#[derive(Debug, Serialize, Deserialize)]
77pub struct SelectStore {
78    #[serde(rename = "@StoreId")]
79    pub store_id: u64,
80    #[serde(rename = "@CatalogId")]
81    pub catalog_id: u64,
82    #[serde(rename = "@EWalletCategoryId")]
83    pub e_wallet_category_id: u64,
84    #[serde(rename = "@VirtualCurrency")]
85    pub virtual_currency: String,
86    #[serde(rename = "@LockboxUrl")]
87    pub lockbox_url: String,
88    #[serde(rename = "@SuccessUrl")]
89    pub success_url: String,
90    #[serde(rename = "@FailedUrl")]
91    pub failed_url: String,
92}
93
94#[derive(Debug, Serialize, Deserialize)]
95pub struct GetCatalog {
96    #[serde(rename = "@UserId")]
97    pub user_id: u64,
98}
99
100#[derive(Debug, Serialize, Deserialize)]
101pub struct GetCatalogResponse {
102    #[serde(rename = "Catalog", default)]
103    pub catalogs: Vec<Catalog>,
104}
105
106#[derive(Debug, Serialize, Deserialize)]
107pub struct GetStore {
108    #[serde(rename = "@UserId")]
109    pub user_id: u64,
110    #[serde(rename = "@StoreId")]
111    pub store_id: u64,
112}
113
114#[derive(Debug, Serialize, Deserialize)]
115pub struct GetStoreResponse {
116    #[serde(rename = "Store", default)]
117    pub stores: Vec<Store>,
118}
119
120#[derive(Debug, Serialize, Deserialize)]
121pub struct GetWalletBalance {
122    #[serde(rename = "@UserId")]
123    pub user_id: u64,
124    #[serde(rename = "@Currency")]
125    pub currency: String,
126}
127
128#[derive(Debug, Serialize, Deserialize)]
129pub struct GetWalletBalanceResponse {
130    #[serde(rename = "@Balance")]
131    pub balance: i64,
132}
133
134#[derive(Debug, Serialize, Deserialize)]
135pub struct Offer {
136    #[serde(rename = "@Type")]
137    pub r#type: String,
138    #[serde(rename = "@OfferId")]
139    pub offer_id: String,
140    #[serde(rename = "@Name")]
141    pub name: String,
142    #[serde(rename = "@Description")]
143    pub description: String,
144    #[serde(rename = "@ImageId")]
145    pub image_id: String,
146    #[serde(rename = "@GameDistributionSub")]
147    pub game_distribution_sub_type: String,
148    #[serde(rename = "@bIsOwned")]
149    pub b_is_owned: bool,
150    #[serde(rename = "@bHidden")]
151    pub b_hidden: bool,
152    #[serde(rename = "@bCanPurchase")]
153    pub b_can_purchase: bool,
154    #[serde(rename = "@PurchaseDate")]
155    pub purchase_date: String,
156    #[serde(rename = "@DownloadDate")]
157    pub download_date: String,
158    #[serde(rename = "@PlayableDate")]
159    pub playable_date: String,
160    #[serde(rename = "@UseEndDate")]
161    pub use_end_date: String,
162    #[serde(rename = "@DownloadSize")]
163    pub download_size: u64,
164    #[serde(rename = "@Currency")]
165    pub currency: String,
166    #[serde(rename = "@bIsDiscounted")]
167    pub b_is_discounted: bool,
168    #[serde(rename = "@Price")]
169    pub price: f64,
170    #[serde(rename = "@LocalizedPrice")]
171    pub localized_price: String,
172    #[serde(rename = "@OriginalPrice")]
173    pub original_price: f64,
174    #[serde(rename = "@LocalizedOriginalPrice")]
175    pub localized_original_price: String,
176    #[serde(rename = "@InventoryCap")]
177    pub inventory_cap: i32,
178    #[serde(rename = "@InventorySold")]
179    pub inventory_sold: i32,
180    #[serde(rename = "@InventoryAvailable")]
181    pub inventory_available: i32,
182    #[serde(rename = "Entitlements", default)]
183    pub entitlements: Vec<Entitlement>,
184}
185
186#[derive(Debug, Serialize, Deserialize)]
187pub struct PurchaseEvent {
188    #[serde(rename = "@manifest")]
189    pub manifest: String,
190}
191
192#[derive(Debug, Serialize, Deserialize)]
193pub struct QueryCategories {
194    #[serde(rename = "@UserId")]
195    pub user_id: u64,
196    #[serde(rename = "FilterCategories", default)]
197    pub filter_categories: Vec<String>,
198}
199
200#[derive(Debug, Serialize, Deserialize)]
201pub struct QueryCategoriesResponse {
202    #[serde(rename = "Categories", default)]
203    pub categories: Vec<Category>,
204}
205
206#[derive(Debug, Serialize, Deserialize)]
207pub struct QueryOffers {
208    #[serde(rename = "@UserId")]
209    pub user_id: u64,
210    #[serde(rename = "FilterCategories", default)]
211    pub filter_categories: Vec<String>,
212    #[serde(rename = "FilterMasterTitleIds", default)]
213    pub filter_master_title_ids: Vec<String>,
214    #[serde(rename = "FilterOffers", default)]
215    pub filter_offers: Vec<String>,
216}
217
218#[derive(Debug, Serialize, Deserialize)]
219pub struct QueryOffersResponse {
220    #[serde(rename = "Offer", default)]
221    pub offers: Vec<Offer>,
222}