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}