1pub mod enums;
7
8use std::collections::HashMap;
9use serde::{Deserialize, Serialize};
10use square_ox_derive::{Builder};
11use crate::api::orders::Orders;
12use crate::api::terminal::Terminal;
13use crate::builder::{AddField, Buildable};
14use crate::objects::enums::{
15 ActionCancelReason, ApplicationDetailsExternalSquareProduct,
16 BankAccountOwnershipType, BusinessAppointmentSettingsBookingLocationType,
17 BusinessAppointmentSettingsCancellationPolicy,
18 BusinessAppointmentSettingsMaxAppointmentsPerDayLimitType,
19 BusinessBookingProfileBookingPolicy, BusinessBookingProfileCustomerTimezoneChoice,
20 BuyNowPayLaterBrand, CatalogCustomAttributeDefinitionType, CatalogItemProductType,
21 CatalogObjectType, CatalogPricingType, CCVStatus, CheckoutOptionsPaymentType, Currency,
22 CustomerCreationSource, DigitalWalletBrand, DigitalWalletStatus, InventoryAlertType,
23 InventoryChangeType, InventoryState, LocationStatus, LocationType,
24 OrderFulfillmentFulfillmentLineItemApplication, OrderFulfillmentPickupDetailsScheduleType,
25 OrderFulfillmentState, OrderFulfillmentType, OrderLineItemDiscountScope,
26 OrderLineItemDiscountType, OrderLineItemItemType, OrderLineItemTaxScope,
27 OrderLineItemTaxType, OrderServiceChargeCalculationPhase, OrderServiceChargeType,
28 OrderState, PaymentSourceType, PaymentStatus, PaymentType, PaymentVerificationMethod,
29 PaymentVerificationResults, ProcessingFeeType, RefundStatus, RiskEvaluationRiskLevel,
30 SearchOrdersSortField, SortOrder, TenderCardDetailsEntryMethod, TenderCardDetailsStatus,
31 TenderType, TerminalCheckoutStatus
32};
33use crate::response::ResponseError;
34
35#[derive(Clone, Debug, Serialize, Deserialize)]
38#[serde(rename_all = "snake_case")]
39#[non_exhaustive]
40pub enum Response {
41 Payment(Payment),
43
44 Order(Order),
46 Orders(Vec<Order>),
47 OrderEntries(Vec<OrderEntry>),
48
49 Locations(Vec<Location>),
51
52 Customer(Customer),
54 Customers(Vec<Customer>),
55
56 Objects(Vec<CatalogObject>),
58 CatalogObject(CatalogObject),
59 Items(Vec<CatalogObject>),
60 MatchedVariationIds(Vec<String>),
61 Limits(CatalogInfoResponseLimits),
62 StandardUnitDescriptionGroup(StandardUnitDescriptionGroup),
63 RelatedObjects(Vec<CatalogObject>),
64
65 Booking(Booking),
67 Bookings(Vec<Booking>),
68 Availabilities(Vec<Availability>),
69 BusinessBookingProfile(BusinessBookingProfile),
70 TeamMemberBookingProfiles(Vec<TeamMemberBookingProfile>),
71 TeamMemberBookingProfile(TeamMemberBookingProfile),
72
73 Cards(Vec<Card>),
75 Card(Card),
76
77 Checkout(CheckoutEnum), PaymentLinks(Vec<PaymentLink>),
80 PaymentLink(PaymentLink),
81
82 Counts(Vec<InventoryCount>),
84
85 Sites(Vec<Site>),
87
88 Checkouts(Vec<TerminalCheckout>),
90}
91
92#[derive(Clone, Debug, Serialize, Deserialize)]
95#[serde(untagged)]
96pub enum CheckoutEnum {
97 Checkout(Checkout),
98 TerminalCheckout(TerminalCheckout),
99}
100
101#[derive(Clone, Debug, Serialize, Deserialize, Default, Builder)]
102pub struct Location {
103 #[serde(default, skip_serializing_if = "Option::is_none")]
104 #[builder_vis("private")]
105 pub id: Option<String>,
106 #[serde(default, skip_serializing_if = "Option::is_none")]
107 pub name: Option<String>,
108 #[serde(default, skip_serializing_if = "Option::is_none")]
109 pub business_email: Option<String>,
110 #[serde(default, skip_serializing_if = "Option::is_none")]
111 pub address: Option<Address>,
112 #[serde(default, skip_serializing_if = "Option::is_none")]
113 pub timezone: Option<String>,
114 #[serde(default, skip_serializing_if = "Option::is_none")]
115 pub capabilities: Option<Vec<String>>,
116 #[serde(default, skip_serializing_if = "Option::is_none")]
117 pub status: Option<LocationStatus>,
118 #[serde(default, skip_serializing_if = "Option::is_none")]
119 pub created_id: Option<String>,
120 #[serde(default, skip_serializing_if = "Option::is_none")]
121 pub coordinates: Option<Coordinates>,
122 #[serde(default, skip_serializing_if = "Option::is_none")]
123 pub country: Option<String>,
124 #[serde(default, skip_serializing_if = "Option::is_none")]
125 #[builder_vis("private")]
126 pub created_at: Option<String>,
127 #[serde(default, skip_serializing_if = "Option::is_none")]
128 pub currency: Option<Currency>,
129 #[serde(default, skip_serializing_if = "Option::is_none")]
130 pub description: Option<String>,
131 #[serde(default, skip_serializing_if = "Option::is_none")]
132 pub facebook_url: Option<String>,
133 #[serde(default, skip_serializing_if = "Option::is_none")]
134 pub full_format_logo_url: Option<String>,
135 #[serde(default, skip_serializing_if = "Option::is_none")]
136 pub logo_url: Option<String>,
137 #[serde(default, skip_serializing_if = "Option::is_none")]
138 pub instagram_username: Option<String>,
139 #[serde(default, skip_serializing_if = "Option::is_none")]
140 pub language_code: Option<String>,
141 #[serde(default, skip_serializing_if = "Option::is_none")]
142 pub mcc: Option<String>,
143 #[serde(default, skip_serializing_if = "Option::is_none")]
144 pub merchant_id: Option<String>,
145 #[serde(default, skip_serializing_if = "Option::is_none")]
146 pub phone_number: Option<String>,
147 #[serde(default, skip_serializing_if = "Option::is_none")]
148 pub pos_background_url: Option<String>,
149 #[serde(default, skip_serializing_if = "Option::is_none")]
150 pub tax_ids: Option<TaxIds>,
151 #[serde(default, skip_serializing_if = "Option::is_none")]
152 pub twitter_username: Option<String>,
153 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
154 pub type_name: Option<LocationType>,
155 #[serde(default, skip_serializing_if = "Option::is_none")]
156 pub business_name: Option<String>,
157 #[serde(default, skip_serializing_if = "Option::is_none")]
158 pub business_hours: Option<BusinessHours>,
159 #[serde(default, skip_serializing_if = "Option::is_none")]
160 pub website_url: Option<String>
161}
162
163#[derive(Clone, Debug, Serialize, Deserialize, Default)]
164pub struct Address {
165 #[serde(default, skip_serializing_if = "Option::is_none")]
166 pub address_line_1: Option<String>,
167 #[serde(default, skip_serializing_if = "Option::is_none")]
168 pub address_line_2: Option<String>,
169 #[serde(default, skip_serializing_if = "Option::is_none")]
170 pub address_line_3: Option<String>,
171 #[serde(default, skip_serializing_if = "Option::is_none")]
172 pub locality: Option<String>,
173 #[serde(default, skip_serializing_if = "Option::is_none")]
174 pub sublocality: Option<String>,
175 #[serde(default, skip_serializing_if = "Option::is_none")]
176 pub administrative_district_level: Option<String>,
177 #[serde(default, skip_serializing_if = "Option::is_none")]
178 pub postal_code: Option<String>,
179 #[serde(default, skip_serializing_if = "Option::is_none")]
180 pub country: Option<String>,
181}
182
183#[derive(Clone, Debug, Serialize, Deserialize, Default)]
184pub struct Coordinates {
185 pub longitude: f64,
186 pub latitude: f64,
187}
188
189#[derive(Clone, Debug, Serialize, Deserialize, Default)]
190pub struct BusinessHours {
191 pub periods: Vec<BusinessHoursPeriod>,
192}
193
194#[derive(Clone, Debug, Serialize, Deserialize, Default)]
195pub struct BusinessHoursPeriod {
196 pub day_of_week: String,
197 pub start_local_time: String,
198 pub end_local_time: String,
199}
200
201#[derive(Clone, Debug, Serialize, Deserialize, Default)]
202pub struct Availability {
203 pub start_at: String,
204 pub location_id: String,
205 pub appointment_segments: Vec<AppointmentSegment>
206}
207
208#[derive(Clone, Debug, Serialize, Deserialize, Default, Builder)]
209pub struct AppointmentSegment {
210 pub duration_minutes: f64,
211 #[builder_into]
212 pub team_member_id: String,
213 #[serde(default, skip_serializing_if = "Option::is_none")]
214 #[builder_into]
215 pub any_team_member_id: Option<String>,
216 #[serde(default, skip_serializing_if = "Option::is_none")]
217 pub intermission_minutes: Option<i32>,
218 #[serde(default, skip_serializing_if = "Option::is_none")]
219 #[builder_into]
220 pub resource_ids: Option<String>,
221 #[builder_into]
222 pub service_variation_id: String,
223 pub service_variation_version: i64,
224}
225
226#[cfg(test)]
227mod test_appointment_segment {
228 use crate::builder::Builder;
229 use super::*;
230
231 #[tokio::test]
232 async fn test_derive() {
233 let expected = AppointmentSegment {
234 duration_minutes: 30.0,
235 team_member_id: "some_id".to_string(),
236 any_team_member_id: None,
237 intermission_minutes: None,
238 resource_ids: None,
239 service_variation_id: "some_id".to_string(),
240 service_variation_version: 1232941981
241 };
242
243 let actual = Builder::from(AppointmentSegment::default())
244 .duration_minutes(30.0)
245 .team_member_id("some_id")
246 .service_variation_id("some_id")
247 .service_variation_version(1232941981)
248 .build()
249 .unwrap();
250
251 assert_eq!(format!("{:?}", expected), format!("{:?}", actual))
252 }
253}
254
255#[derive(Clone, Debug, Serialize, Deserialize, Default)]
256pub struct Customer {
257 #[serde(default, skip_serializing_if = "Option::is_none")]
258 pub id: Option<String>,
259 #[serde(default, skip_serializing_if = "Option::is_none")]
260 pub birthday: Option<String>,
261 #[serde(default, skip_serializing_if = "Option::is_none")]
262 pub address: Option<Address>,
263 #[serde(default, skip_serializing_if = "Option::is_none")]
264 pub company_name: Option<String>,
265 #[serde(default, skip_serializing_if = "Option::is_none")]
266 pub created_at: Option<String>,
267 #[serde(default, skip_serializing_if = "Option::is_none")]
268 pub creation_source: Option<String>,
269 #[serde(default, skip_serializing_if = "Option::is_none")]
270 pub updated_at: Option<String>,
271 #[serde(default, skip_serializing_if = "Option::is_none")]
272 pub email_address: Option<String>,
273 #[serde(default, skip_serializing_if = "Option::is_none")]
274 pub family_name: Option<String>,
275 #[serde(default, skip_serializing_if = "Option::is_none")]
276 pub given_name: Option<String>,
277 #[serde(default, skip_serializing_if = "Option::is_none")]
278 pub group_ids: Option<Vec<String>>,
279 #[serde(default, skip_serializing_if = "Option::is_none")]
280 pub nickname: Option<String>,
281 #[serde(default, skip_serializing_if = "Option::is_none")]
282 pub note: Option<String>,
283 #[serde(default, skip_serializing_if = "Option::is_none")]
284 pub phone_number: Option<String>,
285 #[serde(default, skip_serializing_if = "Option::is_none")]
286 pub preferences: Option<Preferences>,
287 #[serde(default, skip_serializing_if = "Option::is_none")]
288 pub reference_id: Option<String>,
289 #[serde(default, skip_serializing_if = "Option::is_none")]
290 pub segment_ids: Option<Vec<String>>,
291 #[serde(default, skip_serializing_if = "Option::is_none")]
292 pub tax_ids: Option<TaxIds>,
293 #[serde(default, skip_serializing_if = "Option::is_none")]
294 pub version: Option<i64>,
295 #[serde(default, skip_serializing_if = "Option::is_none")]
296 pub cards: Option<Vec<Card>>,
297 #[serde(default, skip_serializing_if = "Option::is_none")]
298 pub idempotency_key: Option<String>,
299}
300
301#[derive(Clone, Debug, Serialize, Deserialize, Default)]
302pub struct Preferences {
303 #[serde(default, skip_serializing_if = "Option::is_none")]
304 pub email_subscribed: Option<bool>,
305}
306
307#[derive(Clone, Debug, Serialize, Deserialize, Default)]
308pub struct TaxIds {
309 #[serde(default, skip_serializing_if = "Option::is_none")]
310 pub eu_vat: Option<String>,
311 #[serde(default, skip_serializing_if = "Option::is_none")]
312 pub fr_siret: Option<String>,
313 #[serde(default, skip_serializing_if = "Option::is_none")]
314 pub fr_naf: Option<String>,
315 #[serde(default, skip_serializing_if = "Option::is_none")]
316 pub es_nif: Option<String>,
317}
318
319#[derive(Clone, Debug, Serialize, Deserialize, Default, Builder)]
321pub struct Card {
322 #[serde(default, skip_serializing_if = "Option::is_none")]
323 #[builder_vis("private")]
324 #[builder_into]
325 pub id: Option<String>,
326 #[serde(default, skip_serializing_if = "Option::is_none")]
327 pub billing_address: Option<Address>,
328 #[serde(default, skip_serializing_if = "Option::is_none")]
329 #[builder_into]
330 pub bin: Option<String>,
331 #[serde(default, skip_serializing_if = "Option::is_none")]
332 #[builder_into]
333 pub card_brand: Option<String>,
334 #[serde(default, skip_serializing_if = "Option::is_none")]
335 #[builder_into]
336 pub card_co_brand: Option<String>,
337 #[serde(default, skip_serializing_if = "Option::is_none")]
338 #[builder_into]
339 pub card_type: Option<String>,
340 #[serde(default, skip_serializing_if = "Option::is_none")]
341 #[builder_into]
342 pub cardholder_name: Option<String>,
343 #[serde(default, skip_serializing_if = "Option::is_none")]
344 #[builder_into]
345 pub customer_id: Option<String>,
346 #[serde(default, skip_serializing_if = "Option::is_none")]
347 pub enabled: Option<bool>,
348 #[serde(default, skip_serializing_if = "Option::is_none")]
349 pub exp_month: Option<i64>,
350 #[serde(default, skip_serializing_if = "Option::is_none")]
351 pub exp_year: Option<i64>,
352 #[builder_into]
353 #[serde(default, skip_serializing_if = "Option::is_none")]
354 pub fingerprint: Option<String>,
355 #[serde(default, skip_serializing_if = "Option::is_none")]
356 #[builder_into]
357 pub last_4: Option<String>,
358 #[builder_into]
359 #[serde(default, skip_serializing_if = "Option::is_none")]
360 pub merchant_id: Option<String>,
361 #[builder_into]
362 #[serde(default, skip_serializing_if = "Option::is_none")]
363 pub prepaid_type: Option<String>,
364 #[builder_into]
365 #[serde(default, skip_serializing_if = "Option::is_none")]
366 pub reference_id: Option<String>,
367 #[serde(default, skip_serializing_if = "Option::is_none")]
368 pub version: Option<i64>,
369}
370
371#[cfg(test)]
372mod test_card_builder {
373 use crate::builder::Builder;
374 use super::*;
375
376 #[tokio::test]
377 async fn test_card_builder() {
378 let expected = Card {
379 id: None,
380 billing_address: Some(Address {
381 address_line_1: Some("some line".to_string()),
382 address_line_2: None,
383 address_line_3: None,
384 locality: None,
385 sublocality: None,
386 administrative_district_level: None,
387 postal_code: None,
388 country: None
389 }),
390 bin: None,
391 card_brand: None,
392 card_co_brand: None,
393 card_type: None,
394 cardholder_name: None,
395 customer_id: None,
396 enabled: Some(true),
397 exp_month: None,
398 exp_year: None,
399 fingerprint: None,
400 last_4: None,
401 merchant_id: None,
402 prepaid_type: None,
403 reference_id: None,
404 version: None
405 };
406
407 let actual = Builder::from(Card::default())
408 .billing_address(Address {
409 address_line_1: Some("some line".to_string()),
410 address_line_2: None,
411 address_line_3: None,
412 locality: None,
413 sublocality: None,
414 administrative_district_level: None,
415 postal_code: None,
416 country: None
417 })
418 .enabled(true)
419 .build()
420 .unwrap();
421
422 assert_eq!(format!("{:?}", expected), format!("{:?}", actual))
423 }
424}
425
426#[derive(Clone, Serialize, Debug, Deserialize)]
427pub struct FilterValue {
428 #[serde(skip_serializing_if = "Option::is_none")]
429 pub all: Option<Vec<String>>,
430 #[serde(skip_serializing_if = "Option::is_none")]
431 pub any: Option<Vec<String>>,
432 #[serde(skip_serializing_if = "Option::is_none")]
433 pub none: Option<Vec<String>>,
434}
435
436#[derive(Clone, Serialize, Debug, Deserialize, Default)]
437pub struct CatalogObject {
438 #[serde(default, skip_serializing_if = "Option::is_none")]
439 pub id: Option<String>,
440 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
441 pub type_name: Option<CatalogObjectType>,
442 #[serde(default, skip_serializing_if = "Option::is_none")]
443 pub absent_at_location_ids: Option<Vec<String>>,
444 #[serde(default, skip_serializing_if = "Option::is_none")]
445 pub catalog_v1_ids: Option<Vec<CatalogV1ID>>,
446 #[serde(default, skip_serializing_if = "Option::is_none")]
447 pub category_data: Option<CatalogCategory>,
448 #[serde(default, skip_serializing_if = "Option::is_none")]
449 pub custom_attribute_definition_data: Option<CatalogCustomAttributeDefinition>,
450 #[serde(default, skip_serializing_if = "Option::is_none")]
451 pub custom_attributes_values: Option<HashMap<String, CatalogCustomAttributeValue>>,
452 #[serde(default, skip_serializing_if = "Option::is_none")]
453 pub discount_data: Option<CatalogDiscount>,
454 #[serde(default, skip_serializing_if = "Option::is_none")]
455 pub image_data: Option<CatalogImage>,
456 #[serde(default, skip_serializing_if = "Option::is_none")]
457 pub is_deleted: Option<bool>,
458 #[serde(default, skip_serializing_if = "Option::is_none")]
459 pub item_data: Option<CatalogItem>,
460 #[serde(default, skip_serializing_if = "Option::is_none")]
461 pub item_variation_data: Option<CatalogItemVariation>,
462 #[serde(default, skip_serializing_if = "Option::is_none")]
463 pub item_option_data: Option<CatalogObjectOption>,
464 #[serde(default, skip_serializing_if = "Option::is_none")]
465 pub measurement_unit_data: Option<CatalogMeasurementUnit>,
466 #[serde(default, skip_serializing_if = "Option::is_none")]
467 pub modifier_data: Option<CatalogModifier>,
468 #[serde(default, skip_serializing_if = "Option::is_none")]
469 pub modifier_list_data: Option<CatalogModifierList>,
470 #[serde(default, skip_serializing_if = "Option::is_none")]
471 pub present_at_all_locations: Option<bool>,
472 #[serde(default, skip_serializing_if = "Option::is_none")]
473 pub present_at_location_ids: Option<Vec<String>>,
474 #[serde(default, skip_serializing_if = "Option::is_none")]
475 pub pricing_rule_data: Option<CatalogPricingRule>,
476 #[serde(default, skip_serializing_if = "Option::is_none")]
477 pub product_set_data: Option<CatalogProductSet>,
478 #[serde(default, skip_serializing_if = "Option::is_none")]
479 pub quick_amount_settings_data: Option<CatalogQuickAmountsSettings>,
480 #[serde(default, skip_serializing_if = "Option::is_none")]
481 pub subscription_plan_data: Option<CatalogSubscriptionPlan>,
482 #[serde(default, skip_serializing_if = "Option::is_none")]
483 pub tax_data: Option<CatalogTax>,
484 #[serde(default, skip_serializing_if = "Option::is_none")]
485 pub time_period_data: Option<CatalogTimePeriod>,
486 #[serde(default, skip_serializing_if = "Option::is_none")]
487 pub updated_at: Option<String>,
488 #[serde(default, skip_serializing_if = "Option::is_none")]
489 pub created_at: Option<String>,
490 #[serde(default, skip_serializing_if = "Option::is_none")]
491 pub version: Option<i64>,
492}
493
494#[derive(Clone, Serialize, Debug, Deserialize)]
495pub struct CatalogObjectVariation {
496 #[serde(default, skip_serializing_if = "Option::is_none")]
497 pub id: Option<String>,
498 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
499 pub type_name: Option<CatalogObjectType>,
500 #[serde(default, skip_serializing_if = "Option::is_none")]
501 pub absent_at_location_ids: Option<Vec<String>>,
502 #[serde(default, skip_serializing_if = "Option::is_none")]
503 pub catalog_v1_ids: Option<Vec<CatalogV1ID>>,
504 #[serde(default, skip_serializing_if = "Option::is_none")]
505 pub category_data: Option<CatalogCategory>,
506 #[serde(default, skip_serializing_if = "Option::is_none")]
507 pub custom_attribute_definition_data: Option<CatalogCustomAttributeDefinition>,
508 #[serde(default, skip_serializing_if = "Option::is_none")]
509 pub custom_attributes_values: Option<HashMap<String, CatalogCustomAttributeValue>>,
510 #[serde(default, skip_serializing_if = "Option::is_none")]
511 pub discount_data: Option<CatalogDiscount>,
512 #[serde(default, skip_serializing_if = "Option::is_none")]
513 pub image_data: Option<CatalogImage>,
514 #[serde(default, skip_serializing_if = "Option::is_none")]
515 pub is_deleted: Option<bool>,
516 #[serde(default, skip_serializing_if = "Option::is_none")]
517 pub item_option_data: Option<CatalogObjectOption>,
518 #[serde(default, skip_serializing_if = "Option::is_none")]
519 pub item_variation_data: Option<CatalogItemVariation>,
520 #[serde(default, skip_serializing_if = "Option::is_none")]
521 pub measurement_unit_data: Option<CatalogMeasurementUnit>,
522 #[serde(default, skip_serializing_if = "Option::is_none")]
523 pub modifier_data: Option<CatalogModifier>,
524 #[serde(default, skip_serializing_if = "Option::is_none")]
525 pub modifier_list_data: Option<CatalogModifierList>,
526 #[serde(default, skip_serializing_if = "Option::is_none")]
527 pub present_at_all_locations: Option<bool>,
528 #[serde(default, skip_serializing_if = "Option::is_none")]
529 pub present_at_location_ids: Option<Vec<String>>,
530 #[serde(default, skip_serializing_if = "Option::is_none")]
531 pub pricing_rule_data: Option<CatalogPricingRule>,
532 #[serde(default, skip_serializing_if = "Option::is_none")]
533 pub product_set_data: Option<CatalogProductSet>,
534 #[serde(default, skip_serializing_if = "Option::is_none")]
535 pub quick_amount_settings_data: Option<CatalogQuickAmountsSettings>,
536 #[serde(default, skip_serializing_if = "Option::is_none")]
537 pub subscription_plan_data: Option<CatalogSubscriptionPlan>,
538 #[serde(default, skip_serializing_if = "Option::is_none")]
539 pub tax_data: Option<CatalogTax>,
540 #[serde(default, skip_serializing_if = "Option::is_none")]
541 pub time_period_data: Option<CatalogTimePeriod>,
542 #[serde(default, skip_serializing_if = "Option::is_none")]
543 pub updated_at: Option<String>,
544 #[serde(default, skip_serializing_if = "Option::is_none")]
545 pub created_at: Option<String>,
546 #[serde(default, skip_serializing_if = "Option::is_none")]
547 pub version: Option<i64>,
548}
549
550#[derive(Clone, Serialize, Debug, Deserialize)]
551pub struct CatalogObjectOption {
552 #[serde(default, skip_serializing_if = "Option::is_none")]
553 pub id: Option<String>,
554 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
555 pub type_name: Option<CatalogObjectType>,
556 #[serde(default, skip_serializing_if = "Option::is_none")]
557 pub absent_at_location_ids: Option<Vec<String>>,
558 #[serde(default, skip_serializing_if = "Option::is_none")]
559 pub catalog_v1_ids: Option<Vec<CatalogV1ID>>,
560 #[serde(default, skip_serializing_if = "Option::is_none")]
561 pub category_data: Option<CatalogCategory>,
562 #[serde(default, skip_serializing_if = "Option::is_none")]
563 pub custom_attribute_definition_data: Option<CatalogCustomAttributeDefinition>,
564 #[serde(default, skip_serializing_if = "Option::is_none")]
565 pub custom_attributes_values: Option<HashMap<String, CatalogCustomAttributeValue>>,
566 #[serde(default, skip_serializing_if = "Option::is_none")]
567 pub discount_data: Option<CatalogDiscount>,
568 #[serde(default, skip_serializing_if = "Option::is_none")]
569 pub image_data: Option<CatalogImage>,
570 #[serde(default, skip_serializing_if = "Option::is_none")]
571 pub is_deleted: Option<bool>,
572 #[serde(default, skip_serializing_if = "Option::is_none")]
573 pub item_option_value_data: Option<CatalogItemOptionValue>,
574 #[serde(default, skip_serializing_if = "Option::is_none")]
575 pub item_variation_data: Option<CatalogItemVariation>,
576 #[serde(default, skip_serializing_if = "Option::is_none")]
577 pub measurement_unit_data: Option<CatalogMeasurementUnit>,
578 #[serde(default, skip_serializing_if = "Option::is_none")]
579 pub modifier_data: Option<CatalogModifier>,
580 #[serde(default, skip_serializing_if = "Option::is_none")]
581 pub modifier_list_data: Option<CatalogModifierList>,
582 #[serde(default, skip_serializing_if = "Option::is_none")]
583 pub present_at_all_locations: Option<bool>,
584 #[serde(default, skip_serializing_if = "Option::is_none")]
585 pub present_at_location_ids: Option<Vec<String>>,
586 #[serde(default, skip_serializing_if = "Option::is_none")]
587 pub pricing_rule_data: Option<CatalogPricingRule>,
588 #[serde(default, skip_serializing_if = "Option::is_none")]
589 pub product_set_data: Option<CatalogProductSet>,
590 #[serde(default, skip_serializing_if = "Option::is_none")]
591 pub quick_amount_settings_data: Option<CatalogQuickAmountsSettings>,
592 #[serde(default, skip_serializing_if = "Option::is_none")]
593 pub subscription_plan_data: Option<CatalogSubscriptionPlan>,
594 #[serde(default, skip_serializing_if = "Option::is_none")]
595 pub tax_data: Option<CatalogTax>,
596 #[serde(default, skip_serializing_if = "Option::is_none")]
597 pub time_period_data: Option<CatalogTimePeriod>,
598 #[serde(default, skip_serializing_if = "Option::is_none")]
599 pub updated_at: Option<String>,
600 #[serde(default, skip_serializing_if = "Option::is_none")]
601 pub created_at: Option<String>,
602 #[serde(default, skip_serializing_if = "Option::is_none")]
603 pub version: Option<i64>,
604}
605
606#[derive(Clone, Serialize, Debug, Deserialize)]
607pub struct CatalogV1ID {
608 #[serde(default, skip_serializing_if = "Option::is_none")]
609 pub catalog_v1_id: Option<String>,
610 #[serde(default, skip_serializing_if = "Option::is_none")]
611 pub location_id: Option<String>,
612}
613
614#[derive(Clone, Serialize, Debug, Deserialize)]
615pub struct CatalogCategory {
616 #[serde(default, skip_serializing_if = "Option::is_none")]
617 pub image_ids: Option<Vec<String>>,
618 #[serde(default, skip_serializing_if = "Option::is_none")]
619 pub name: Option<String>,
620}
621
622#[derive(Clone, Serialize, Debug, Deserialize)]
623pub struct CatalogCustomAttributeDefinition {
624 #[serde(default, skip_serializing_if = "Option::is_none")]
625 allowed_object_types: Option<String>,
626 #[serde(default, skip_serializing_if = "Option::is_none")]
627 name: Option<String>,
628 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
629 pub type_name: Option<CatalogObjectType>,
630 #[serde(default, skip_serializing_if = "Option::is_none")]
631 app_visibility: Option<String>,
632 #[serde(default, skip_serializing_if = "Option::is_none")]
633 custom_attribute_usage_count: Option<i32>,
634 #[serde(default, skip_serializing_if = "Option::is_none")]
635 description: Option<String>,
636 #[serde(default, skip_serializing_if = "Option::is_none")]
637 key: Option<String>,
638 #[serde(default, skip_serializing_if = "Option::is_none")]
639 number_config: Option<CatalogCustomAttributeDefinitionNumberConfig>,
640 #[serde(default, skip_serializing_if = "Option::is_none")]
641 selection_config: Option<CatalogCustomAttributeDefinitionSelectionConfig>,
642 #[serde(default, skip_serializing_if = "Option::is_none")]
643 seller_visibility: Option<String>,
644 #[serde(default, skip_serializing_if = "Option::is_none")]
645 source_application: Option<SourceApplication>,
646 #[serde(default, skip_serializing_if = "Option::is_none")]
647 string_config: Option<CatalogCustomAttributeDefinitionStringConfig>,
648
649}
650
651#[derive(Clone, Serialize, Debug, Deserialize)]
652pub struct CatalogCustomAttributeDefinitionNumberConfig {
653 #[serde(default, skip_serializing_if = "Option::is_none")]
654 pub precision: Option<i32>
655}
656
657#[derive(Clone, Serialize, Debug, Deserialize)]
658pub struct CatalogCustomAttributeDefinitionSelectionConfig {
659 #[serde(default, skip_serializing_if = "Option::is_none")]
660 pub allowed_selections: Option<Vec<CatalogCustomAttributeDefinitionSelectionConfigCustomAttributeSelection>>,
661 #[serde(default, skip_serializing_if = "Option::is_none")]
662 pub max_allowed_selections: Option<i32>
663}
664
665#[derive(Clone, Serialize, Debug, Deserialize)]
666pub struct CatalogCustomAttributeDefinitionSelectionConfigCustomAttributeSelection {
667 #[serde(default, skip_serializing_if = "Option::is_none")]
668 pub name: Option<String>,
669 #[serde(default, skip_serializing_if = "Option::is_none")]
670 pub uid: Option<String>,
671}
672
673#[derive(Clone, Serialize, Debug, Deserialize)]
674pub struct SourceApplication {
675 #[serde(default, skip_serializing_if = "Option::is_none")]
676 pub application_id: Option<String>,
677 #[serde(default, skip_serializing_if = "Option::is_none")]
678 pub name: Option<String>,
679 #[serde(default, skip_serializing_if = "Option::is_none")]
680 pub product: Option<String>,
681}
682
683#[derive(Clone, Serialize, Debug, Deserialize)]
684pub struct CatalogCustomAttributeDefinitionStringConfig {
685 #[serde(default, skip_serializing_if = "Option::is_none")]
686 pub enforce_uniqueness: Option<bool>
687}
688
689#[derive(Clone, Serialize, Debug, Deserialize)]
690pub struct CatalogCustomAttributeValue {
691 #[serde(default, skip_serializing_if = "Option::is_none")]
692 pub boolean_value: Option<bool>,
693 #[serde(default, skip_serializing_if = "Option::is_none")]
694 pub custom_attribute_definition_id: Option<String>,
695 #[serde(default, skip_serializing_if = "Option::is_none")]
696 pub key: Option<String>,
697 #[serde(default, skip_serializing_if = "Option::is_none")]
698 pub name: Option<String>,
699 #[serde(default, skip_serializing_if = "Option::is_none")]
700 pub number_value: Option<String>,
701 #[serde(default, skip_serializing_if = "Option::is_none")]
702 pub selection_uid_values: Option<Vec<String>>,
703 #[serde(default, skip_serializing_if = "Option::is_none")]
704 pub string_value: Option<String>,
705 #[serde(rename="type", default, skip_serializing_if = "Option::is_none")]
706 pub type_name: Option<CatalogCustomAttributeDefinitionType>,
707}
708
709#[derive(Clone, Serialize, Debug, Deserialize)]
710pub struct CatalogDiscount {
711 #[serde(default, skip_serializing_if = "Option::is_none")]
712 pub amount_money: Option<Money>,
713 #[serde(default, skip_serializing_if = "Option::is_none")]
714 pub discount_type: Option<String>,
715 #[serde(default, skip_serializing_if = "Option::is_none")]
716 pub label_color: Option<String>,
717 #[serde(default, skip_serializing_if = "Option::is_none")]
718 pub maximum_amount_money: Option<Money>,
719 #[serde(default, skip_serializing_if = "Option::is_none")]
720 pub modify_tax_basis: Option<String>,
721 #[serde(default, skip_serializing_if = "Option::is_none")]
722 pub name: Option<String>,
723 #[serde(default, skip_serializing_if = "Option::is_none")]
724 pub percentage: Option<String>,
725 #[serde(default, skip_serializing_if = "Option::is_none")]
726 pub pin_required: Option<String>,
727}
728
729#[derive(Clone, Serialize, Debug, Deserialize)]
730pub struct CatalogImage {
731 #[serde(default, skip_serializing_if = "Option::is_none")]
732 pub caption: Option<String>,
733 #[serde(default, skip_serializing_if = "Option::is_none")]
734 pub name: Option<String>,
735 #[serde(default, skip_serializing_if = "Option::is_none")]
736 pub photo_studio_order_id: Option<String>,
737 #[serde(default, skip_serializing_if = "Option::is_none")]
738 pub url: Option<String>,
739}
740
741#[derive(Clone, Serialize, Debug, Deserialize)]
742pub struct CatalogItem {
743 #[serde(default, skip_serializing_if = "Option::is_none")]
744 pub abbreviation: Option<String>,
745 #[serde(default, skip_serializing_if = "Option::is_none")]
746 pub available_electronically: Option<bool>,
747 #[serde(default, skip_serializing_if = "Option::is_none")]
748 pub available_for_pickup: Option<bool>,
749 #[serde(default, skip_serializing_if = "Option::is_none")]
750 pub available_online: Option<bool>,
751 #[serde(default, skip_serializing_if = "Option::is_none")]
752 pub category_id: Option<String>,
753 #[serde(default, skip_serializing_if = "Option::is_none")]
754 pub description: Option<String>,
755 #[serde(default, skip_serializing_if = "Option::is_none")]
756 pub image_ids : Option<Vec<String>>,
757 #[serde(default, skip_serializing_if = "Option::is_none")]
758 pub image_option: Option<Vec<CatalogItemOptionForItem>>,
759 #[serde(default, skip_serializing_if = "Option::is_none")]
760 pub label_color: Option<String>,
761 #[serde(default, skip_serializing_if = "Option::is_none")]
762 pub modifier_list_info: Option<Vec<CatalogItemModifierListInfo>>,
763 #[serde(default, skip_serializing_if = "Option::is_none")]
764 pub name: Option<String>,
765 #[serde(default, skip_serializing_if = "Option::is_none")]
766 pub product_type: Option<CatalogItemProductType>,
767 #[serde(default, skip_serializing_if = "Option::is_none")]
768 pub skip_modifier_scree: Option<bool>,
769 #[serde(default, skip_serializing_if = "Option::is_none")]
770 pub sort_name: Option<String>,
771 #[serde(default, skip_serializing_if = "Option::is_none")]
772 pub tax_ids: Option<Vec<String>>,
773 #[serde(default, skip_serializing_if = "Option::is_none")]
774 pub variations: Option<Vec<CatalogObjectVariation>>,
775}
776
777#[derive(Clone, Serialize, Debug, Deserialize)]
778pub struct CatalogItemOptionForItem {
779 #[serde(default, skip_serializing_if = "Option::is_none")]
780 pub item_option_id: Option<String>,
781}
782
783#[derive(Clone, Serialize, Debug, Deserialize)]
784pub struct CatalogItemModifierListInfo {
785 #[serde(default, skip_serializing_if = "Option::is_none")]
786 pub modifier_list_id: Option<String>,
787 #[serde(default, skip_serializing_if = "Option::is_none")]
788 pub enabled: Option<String>,
789 #[serde(default, skip_serializing_if = "Option::is_none")]
790 pub max_selected_modifiers: Option<String>,
791 #[serde(default, skip_serializing_if = "Option::is_none")]
792 pub min_selected_modifiers: Option<String>,
793 #[serde(default, skip_serializing_if = "Option::is_none")]
794 pub modifier_overrides: Option<String>,
795}
796
797#[derive(Clone, Serialize, Debug, Deserialize)]
798pub struct CatalogModifierOverride {
799 #[serde(default, skip_serializing_if = "Option::is_none")]
800 pub modifier_id: Option<String>,
801 #[serde(default, skip_serializing_if = "Option::is_none")]
802 pub on_by_default: Option<String>,
803}
804
805#[derive(Clone, Serialize, Debug, Deserialize)]
806pub struct CatalogItemOption {
807 #[serde(default, skip_serializing_if = "Option::is_none")]
808 pub description: Option<String>,
809 #[serde(default, skip_serializing_if = "Option::is_none")]
810 pub display_name: Option<String>,
811 #[serde(default, skip_serializing_if = "Option::is_none")]
812 pub name: Option<String>,
813 #[serde(default, skip_serializing_if = "Option::is_none")]
814 pub show_colors: Option<bool>,
815 #[serde(default, skip_serializing_if = "Option::is_none")]
816 pub values: Option<CatalogItemOptionValue>,
817}
818
819#[derive(Clone, Serialize, Debug, Deserialize)]
820pub struct CatalogItemOptionValue {
821 #[serde(default, skip_serializing_if = "Option::is_none")]
822 pub color: Option<String>,
823 #[serde(default, skip_serializing_if = "Option::is_none")]
824 pub description: Option<String>,
825 #[serde(default, skip_serializing_if = "Option::is_none")]
826 pub item_option_id: Option<String>,
827 #[serde(default, skip_serializing_if = "Option::is_none")]
828 pub name: Option<String>,
829 #[serde(default, skip_serializing_if = "Option::is_none")]
830 pub ordinal: Option<i32>,
831}
832
833#[derive(Clone, Serialize, Debug, Deserialize)]
834pub struct CatalogItemVariation {
835 #[serde(default, skip_serializing_if = "Option::is_none")]
836 pub available_for_booking: Option<bool>,
837 #[serde(default, skip_serializing_if = "Option::is_none")]
838 pub image_ids: Option<Vec<String>>,
839 #[serde(default, skip_serializing_if = "Option::is_none")]
840 pub inventory_alert_threshold: Option<i64>,
841 #[serde(default, skip_serializing_if = "Option::is_none")]
842 pub inventory_alert_type: Option<InventoryAlertType>,
843 #[serde(default, skip_serializing_if = "Option::is_none")]
844 pub item_id: Option<String>,
845 #[serde(default, skip_serializing_if = "Option::is_none")]
846 pub item_option_values: Option<Vec<CatalogItemOptionValueForItemVariation>>,
847 #[serde(default, skip_serializing_if = "Option::is_none")]
848 pub location_overrides: Option<Vec<ItemVariationLocationOverrides>>,
849 #[serde(default, skip_serializing_if = "Option::is_none")]
850 pub measurement_unit_id: Option<String>,
851 #[serde(default, skip_serializing_if = "Option::is_none")]
852 pub name: Option<String>,
853 #[serde(default, skip_serializing_if = "Option::is_none")]
854 pub ordinal: Option<i32>,
855 #[serde(default, skip_serializing_if = "Option::is_none")]
856 pub price_money: Option<Money>,
857 #[serde(default, skip_serializing_if = "Option::is_none")]
858 pub pricing_type: Option<CatalogPricingType>,
859 #[serde(default, skip_serializing_if = "Option::is_none")]
860 pub sellable: Option<bool>,
861 #[serde(default, skip_serializing_if = "Option::is_none")]
862 pub service_duration: Option<i64>,
863 #[serde(default, skip_serializing_if = "Option::is_none")]
864 pub sku: Option<String>,
865 #[serde(default, skip_serializing_if = "Option::is_none")]
866 pub stockable: Option<bool>,
867 #[serde(default, skip_serializing_if = "Option::is_none")]
868 pub stockable_conversion: Option<CatalogStockConversion>,
869 #[serde(default, skip_serializing_if = "Option::is_none")]
870 pub team_member_ids: Option<Vec<String>>,
871 #[serde(default, skip_serializing_if = "Option::is_none")]
872 pub track_inventory: Option<bool>,
873 #[serde(default, skip_serializing_if = "Option::is_none")]
874 pub upc: Option<String>,
875 #[serde(default, skip_serializing_if = "Option::is_none")]
876 pub user_data: Option<String>,
877}
878
879#[derive(Clone, Serialize, Debug, Deserialize)]
880pub struct CatalogItemOptionValueForItemVariation {
881 #[serde(default, skip_serializing_if = "Option::is_none")]
882 pub item_option_id: Option<String>,
883 #[serde(default, skip_serializing_if = "Option::is_none")]
884 pub item_option_value_id: Option<String>,
885}
886
887#[derive(Clone, Serialize, Debug, Deserialize)]
888pub struct ItemVariationLocationOverrides {
889 #[serde(default, skip_serializing_if = "Option::is_none")]
890 pub inventory_alert_threshold: Option<i64>,
891 #[serde(default, skip_serializing_if = "Option::is_none")]
892 pub inventory_alert_type: Option<InventoryAlertType>,
893 #[serde(default, skip_serializing_if = "Option::is_none")]
894 pub location_id: Option<String>,
895 #[serde(default, skip_serializing_if = "Option::is_none")]
896 pub price_money: Option<Money>,
897 #[serde(default, skip_serializing_if = "Option::is_none")]
898 pub pricing_type: Option<CatalogPricingType>,
899 #[serde(default, skip_serializing_if = "Option::is_none")]
900 pub sold_out: Option<bool>,
901 #[serde(default, skip_serializing_if = "Option::is_none")]
902 pub sold_out_valid_until: Option<String>,
903 #[serde(default, skip_serializing_if = "Option::is_none")]
904 pub track_inventory: Option<bool>,
905}
906
907#[derive(Clone, Serialize, Debug, Deserialize)]
908pub struct CatalogStockConversion {
909 #[serde(default, skip_serializing_if = "Option::is_none")]
910 pub nonstockable_quantity: Option<String>,
911 #[serde(default, skip_serializing_if = "Option::is_none")]
912 pub stockable_item_variation_id: Option<String>,
913 #[serde(default, skip_serializing_if = "Option::is_none")]
914 pub stockable_quantity: Option<String>,
915}
916
917#[derive(Clone, Serialize, Debug, Deserialize)]
918pub struct CatalogMeasurementUnit {
919 #[serde(default, skip_serializing_if = "Option::is_none")]
920 pub measurement_unit: Option<MeasurementUnit>,
921 #[serde(default, skip_serializing_if = "Option::is_none")]
922 pub precision: Option<i32>,
923}
924
925#[derive(Clone, Serialize, Debug, Deserialize)]
926pub struct MeasurementUnit {
927 #[serde(default, skip_serializing_if = "Option::is_none")]
928 pub area_unit: Option<String>,
929 #[serde(default, skip_serializing_if = "Option::is_none")]
930 pub custom_unit: Option<MeasurementUnitCustom>,
931 #[serde(default, skip_serializing_if = "Option::is_none")]
932 pub generic_unit: Option<String>,
933 #[serde(default, skip_serializing_if = "Option::is_none")]
934 pub length_unit: Option<String>,
935 #[serde(default, skip_serializing_if = "Option::is_none")]
936 pub time_unit: Option<String>,
937 #[serde(rename= "type", default, skip_serializing_if = "Option::is_none")]
938 pub type_name: Option<String>,
939 #[serde(default, skip_serializing_if = "Option::is_none")]
940 pub volume_unit: Option<String>,
941 #[serde(default, skip_serializing_if = "Option::is_none")]
942 pub weight_unit: Option<String>,
943}
944
945#[derive(Clone, Serialize, Debug, Deserialize)]
946pub struct MeasurementUnitCustom {
947 #[serde(default, skip_serializing_if = "Option::is_none")]
948 pub abbreviation: Option<String>,
949 #[serde(default, skip_serializing_if = "Option::is_none")]
950 pub name: Option<String>,
951}
952
953#[derive(Clone, Serialize, Debug, Deserialize)]
954pub struct CatalogModifier {
955 #[serde(default, skip_serializing_if = "Option::is_none")]
956 pub image_ids: Option<Vec<String>>,
957 #[serde(default, skip_serializing_if = "Option::is_none")]
958 pub modifier_list_id: Option<String>,
959 #[serde(default, skip_serializing_if = "Option::is_none")]
960 pub name: Option<String>,
961 #[serde(default, skip_serializing_if = "Option::is_none")]
962 pub ordinal: Option<i32>,
963 #[serde(default, skip_serializing_if = "Option::is_none")]
964 pub price_money: Option<Money>,
965}
966
967#[derive(Clone, Serialize, Debug, Deserialize)]
968pub struct CatalogModifierList {
969 #[serde(default, skip_serializing_if = "Option::is_none")]
970 pub image_ids: Option<Vec<String>>,
971 #[serde(default, skip_serializing_if = "Option::is_none")]
972 pub modifiers: Option<CatalogModifier>,
973 #[serde(default, skip_serializing_if = "Option::is_none")]
974 pub name: Option<String>,
975 #[serde(default, skip_serializing_if = "Option::is_none")]
976 pub ordinal: Option<i32>,
977 #[serde(default, skip_serializing_if = "Option::is_none")]
978 pub selection_type: Option<String>,
979}
980
981#[derive(Clone, Serialize, Debug, Deserialize)]
982pub struct CatalogPricingRule {
983 #[serde(default, skip_serializing_if = "Option::is_none")]
984 pub customer_group_ids_any: Option<Vec<String>>,
985 #[serde(default, skip_serializing_if = "Option::is_none")]
986 pub discount_id: Option<String>,
987 #[serde(default, skip_serializing_if = "Option::is_none")]
988 pub exclude_products_id: Option<String>,
989 #[serde(default, skip_serializing_if = "Option::is_none")]
990 pub exclude_strategy: Option<String>,
991 #[serde(default, skip_serializing_if = "Option::is_none")]
992 pub match_products_id: Option<String>,
993 #[serde(default, skip_serializing_if = "Option::is_none")]
994 pub minimum_order_subtotal_money: Option<Money>,
995 #[serde(default, skip_serializing_if = "Option::is_none")]
996 pub name: Option<String>,
997 #[serde(default, skip_serializing_if = "Option::is_none")]
998 pub time_period_ids: Option<String>,
999 #[serde(default, skip_serializing_if = "Option::is_none")]
1000 pub valid_from_date: Option<String>,
1001 #[serde(default, skip_serializing_if = "Option::is_none")]
1002 pub valid_from_local_time: Option<Vec<String>>,
1003 #[serde(default, skip_serializing_if = "Option::is_none")]
1004 pub valid_until_date: Option<String>,
1005 #[serde(default, skip_serializing_if = "Option::is_none")]
1006 pub valid_until_local_time: Option<String>,
1007 #[serde(default, skip_serializing_if = "Option::is_none")]
1008 pub apply_products_id: Option<String>,
1009}
1010
1011#[derive(Clone, Serialize, Debug, Deserialize)]
1012pub struct CatalogProductSet {
1013 #[serde(default, skip_serializing_if = "Option::is_none")]
1014 pub all_products: Option<bool>,
1015 #[serde(default, skip_serializing_if = "Option::is_none")]
1016 pub name: Option<String>,
1017 #[serde(default, skip_serializing_if = "Option::is_none")]
1018 pub product_ids_all: Option<Vec<String>>,
1019 #[serde(default, skip_serializing_if = "Option::is_none")]
1020 pub product_ids_any: Option<Vec<String>>,
1021 #[serde(default, skip_serializing_if = "Option::is_none")]
1022 pub quantity_exact: Option<i64>,
1023 #[serde(default, skip_serializing_if = "Option::is_none")]
1024 pub quantity_max: Option<i64>,
1025 #[serde(default, skip_serializing_if = "Option::is_none")]
1026 pub quantity_min: Option<i64>,
1027}
1028
1029#[derive(Clone, Serialize, Debug, Deserialize)]
1030pub struct CatalogQuickAmountsSettings {
1031 #[serde(default, skip_serializing_if = "Option::is_none")]
1032 pub option: Option<String>,
1033 #[serde(default, skip_serializing_if = "Option::is_none")]
1034 pub amounts: Option<Vec<CatalogQuickAmount>>,
1035 #[serde(default, skip_serializing_if = "Option::is_none")]
1036 pub eligible_for_auto_amounts: Option<bool>,
1037}
1038
1039#[derive(Clone, Serialize, Debug, Deserialize)]
1040pub struct CatalogQuickAmount {
1041 #[serde(default, skip_serializing_if = "Option::is_none")]
1042 pub amount: Option<Money>,
1043 #[serde(rename="type", default, skip_serializing_if = "Option::is_none")]
1044 pub type_name: Option<String>,
1045 #[serde(default, skip_serializing_if = "Option::is_none")]
1046 pub ordinal: Option<i64>,
1047 #[serde(default, skip_serializing_if = "Option::is_none")]
1048 pub score: Option<i64>,
1049}
1050
1051#[derive(Clone, Serialize, Debug, Deserialize)]
1052pub struct CatalogSubscriptionPlan {
1053 #[serde(default, skip_serializing_if = "Option::is_none")]
1054 pub name: Option<String>,
1055 #[serde(default, skip_serializing_if = "Option::is_none")]
1056 pub phases: Option<SubscriptionPhase>
1057}
1058
1059#[derive(Clone, Serialize, Debug, Deserialize)]
1060pub struct SubscriptionPhase {
1061 #[serde(default, skip_serializing_if = "Option::is_none")]
1062 pub cadence: Option<String>,
1063 #[serde(default, skip_serializing_if = "Option::is_none")]
1064 pub ordinal: Option<i64>,
1065 #[serde(default, skip_serializing_if = "Option::is_none")]
1066 pub periods: Option<i32>,
1067 #[serde(default, skip_serializing_if = "Option::is_none")]
1068 pub recurring_price_money: Option<Money>,
1069 #[serde(default, skip_serializing_if = "Option::is_none")]
1070 pub uid: Option<String>,
1071}
1072
1073#[derive(Clone, Serialize, Debug, Deserialize)]
1074pub struct CatalogTax {
1075 #[serde(default, skip_serializing_if = "Option::is_none")]
1076 pub applies_to_custom_amounts: Option<bool>,
1077 #[serde(default, skip_serializing_if = "Option::is_none")]
1078 pub calculation_phase: Option<String>,
1079 #[serde(default, skip_serializing_if = "Option::is_none")]
1080 pub enabled: Option<bool>,
1081 #[serde(default, skip_serializing_if = "Option::is_none")]
1082 pub inclusion_type: Option<String>,
1083 #[serde(default, skip_serializing_if = "Option::is_none")]
1084 pub name: Option<String>,
1085 #[serde(default, skip_serializing_if = "Option::is_none")]
1086 pub percentage: Option<String>,
1087}
1088
1089#[derive(Clone, Serialize, Debug, Deserialize)]
1090pub struct CatalogTimePeriod {
1091 #[serde(default, skip_serializing_if = "Option::is_none")]
1092 pub event: Option<String>,
1093}
1094
1095#[derive(Clone, Serialize, Debug, Deserialize, Default, Builder)]
1096pub struct Booking {
1097 #[builder_vis("private")]
1098 #[serde(default, skip_serializing_if = "Option::is_none")]
1099 pub id: Option<String>,
1100 #[serde(default, skip_serializing_if = "Option::is_none")]
1101 pub all_day: Option<bool>,
1102 #[serde(default, skip_serializing_if = "Option::is_none")]
1103 pub appointment_segments: Option<Vec<AppointmentSegment>>,
1104 #[serde(default, skip_serializing_if = "Option::is_none")]
1105 pub created_at: Option<String>,
1106 #[serde(default, skip_serializing_if = "Option::is_none")]
1107 pub booking_creator_details: Option<BookingCreatorDetails>,
1108 #[serde(default, skip_serializing_if = "Option::is_none")]
1109 #[builder_into]
1110 #[builder_validate("is_some")]
1111 pub customer_id: Option<String>,
1112 #[serde(default, skip_serializing_if = "Option::is_none")]
1113 #[builder_into]
1114 pub customer_note: Option<String>,
1115 #[serde(default, skip_serializing_if = "Option::is_none")]
1116 #[builder_into]
1117 #[builder_validate("is_some")]
1118 pub location_id: Option<String>,
1119 #[serde(default, skip_serializing_if = "Option::is_none")]
1120 pub location_type: Option<BusinessAppointmentSettingsBookingLocationType>,
1121 #[serde(default, skip_serializing_if = "Option::is_none")]
1122 #[builder_into]
1123 pub seller_note: Option<String>,
1124 #[serde(default, skip_serializing_if = "Option::is_none")]
1125 #[builder_into]
1126 pub source: Option<String>,
1127 #[serde(default, skip_serializing_if = "Option::is_none")]
1128 #[builder_into]
1129 pub start_at: Option<String>,
1130 #[serde(default, skip_serializing_if = "Option::is_none")]
1131 #[builder_into]
1132 pub status: Option<String>,
1133 #[serde(default, skip_serializing_if = "Option::is_none")]
1134 pub transition_time_minutes: Option<i32>,
1135 #[serde(default, skip_serializing_if = "Option::is_none")]
1136 #[builder_into]
1137 pub updated_at: Option<String>,
1138 #[serde(default, skip_serializing_if = "Option::is_none")]
1139 pub version: Option<i32>
1140}
1141
1142impl AddField<AppointmentSegment> for Booking {
1143 fn add_field(&mut self, field: AppointmentSegment) {
1144 if let Some(segments) = self.appointment_segments.as_mut() {
1145 segments.push(field);
1146 } else {
1147 self.appointment_segments = Some(vec![field])
1148 }
1149 }
1150}
1151
1152#[derive(Clone, Serialize, Debug, Deserialize)]
1153pub struct BookingCreatorDetails {
1154 #[serde(default, skip_serializing_if = "Option::is_none")]
1155 pub creator_type: Option<String>,
1156 #[serde(default, skip_serializing_if = "Option::is_none")]
1157 pub customer_id: Option<String>,
1158 #[serde(default, skip_serializing_if = "Option::is_none")]
1159 pub team_member_id: Option<String>,
1160}
1161
1162#[derive(Serialize, Deserialize, Debug, Clone)]
1166pub struct Money {
1167 #[serde(default, skip_serializing_if = "Option::is_none")]
1168 pub amount: Option<i64>,
1169 pub currency: Currency,
1170}
1171
1172#[derive(Serialize, Deserialize, Debug, Clone)]
1173pub struct BusinessBookingProfile {
1174 #[serde(default, skip_serializing_if = "Option::is_none")]
1175 pub allow_user_cancel: Option<bool>,
1176 #[serde(default, skip_serializing_if = "Option::is_none")]
1177 pub booking_enabled: Option<bool>,
1178 #[serde(default, skip_serializing_if = "Option::is_none")]
1179 pub booking_policy: Option<BusinessBookingProfileBookingPolicy>,
1180 #[serde(default, skip_serializing_if = "Option::is_none")]
1181 pub business_appointment_settings: Option<BusinessAppointmentSettings>,
1182 #[serde(default, skip_serializing_if = "Option::is_none")]
1183 pub created_at: Option<String>,
1184 #[serde(default, skip_serializing_if = "Option::is_none")]
1185 pub customer_timezone_choice: Option<BusinessBookingProfileCustomerTimezoneChoice>,
1186 #[serde(default, skip_serializing_if = "Option::is_none")]
1187 pub seller_id: Option<String>,
1188 #[serde(default, skip_serializing_if = "Option::is_none")]
1189 pub support_seller_level_writes: Option<bool>,
1190}
1191
1192#[derive(Serialize, Deserialize, Debug, Clone)]
1193pub struct BusinessAppointmentSettings {
1194 #[serde(default, skip_serializing_if = "Option::is_none")]
1195 pub alignment_time: Option<String>,
1196 #[serde(default, skip_serializing_if = "Option::is_none")]
1197 pub any_team_member_booking_enabled: Option<bool>,
1198 #[serde(default, skip_serializing_if = "Option::is_none")]
1199 pub cancellation_fee_money: Option<Money>,
1200 #[serde(default, skip_serializing_if = "Option::is_none")]
1201 pub cancellation_policy: Option<BusinessAppointmentSettingsCancellationPolicy>,
1202 #[serde(default, skip_serializing_if = "Option::is_none")]
1203 pub cancellation_policy_text: Option<String>,
1204 #[serde(default, skip_serializing_if = "Option::is_none")]
1205 pub cancellation_window_seconds: Option<i32>,
1206 #[serde(default, skip_serializing_if = "Option::is_none")]
1207 pub location_types: Option<Vec<BusinessAppointmentSettingsBookingLocationType>>,
1208 #[serde(default, skip_serializing_if = "Option::is_none")]
1209 pub max_appointments_per_day_limit: Option<i32>,
1210 #[serde(default, skip_serializing_if = "Option::is_none")]
1211 pub max_appointments_per_day_limit_type: Option<BusinessAppointmentSettingsMaxAppointmentsPerDayLimitType>,
1212 #[serde(default, skip_serializing_if = "Option::is_none")]
1213 pub max_booking_lead_time_seconds: Option<i32>,
1214 #[serde(default, skip_serializing_if = "Option::is_none")]
1215 pub min_booking_lead_time_seconds: Option<i32>,
1216 #[serde(default, skip_serializing_if = "Option::is_none")]
1217 pub multiple_service_booking_enabled: Option<bool>,
1218 #[serde(default, skip_serializing_if = "Option::is_none")]
1219 pub skip_booking_flow_staff_selection: Option<bool>,
1220}
1221
1222#[derive(Serialize, Deserialize, Debug, Clone)]
1223pub struct TeamMemberBookingProfile {
1224 #[serde(default, skip_serializing_if = "Option::is_none")]
1225 pub description: Option<String>,
1226 #[serde(default, skip_serializing_if = "Option::is_none")]
1227 pub display_name: Option<String>,
1228 #[serde(default, skip_serializing_if = "Option::is_none")]
1229 pub is_bookable: Option<bool>,
1230 #[serde(default, skip_serializing_if = "Option::is_none")]
1231 pub profile_image_url: Option<String>,
1232 #[serde(default, skip_serializing_if = "Option::is_none")]
1233 pub team_member_id: Option<String>,
1234}
1235
1236#[derive(Clone, Serialize, Debug, Deserialize, Default, Builder)]
1237pub struct CreateOrderRequest {
1238 #[builder_rand("uuid")]
1239 pub idempotency_key: Option<String>,
1240 pub order: Order,
1241}
1242
1243impl AddField<Order> for CreateOrderRequest {
1244 fn add_field(&mut self, field: Order) {
1245 self.order = field;
1246 }
1247}
1248
1249#[derive(Clone, Serialize, Debug, Deserialize, Default, Builder)]
1250pub struct Order {
1251 #[serde(default, skip_serializing_if = "Option::is_none")]
1252 #[builder_into]
1253 pub id: Option<String>,
1254 #[serde(default, skip_serializing_if = "Option::is_none")]
1255 #[builder_into]
1256 #[builder_validate("is_some")]
1257 pub location_id: Option<String>,
1258 #[serde(default, skip_serializing_if = "Option::is_none")]
1259 #[builder_into]
1260 pub close_at: Option<String>,
1261 #[serde(default, skip_serializing_if = "Option::is_none")]
1262 #[builder_into]
1263 pub created_at: Option<String>,
1264 #[serde(default, skip_serializing_if = "Option::is_none")]
1265 #[builder_into]
1266 pub customer_id: Option<String>,
1267 #[serde(default, skip_serializing_if = "Option::is_none")]
1268 pub discounts: Option<Vec<OrderLineItemDiscount>>,
1269 #[serde(default, skip_serializing_if = "Option::is_none")]
1270 pub fulfillments: Option<OrderFulfillment>,
1271 #[serde(default, skip_serializing_if = "Option::is_none")]
1272 pub line_items: Option<Vec<OrderLineItem>>,
1273 #[serde(default, skip_serializing_if = "Option::is_none")]
1274 pub metadata: Option<HashMap<String, String>>,
1275 #[serde(default, skip_serializing_if = "Option::is_none")]
1276 pub net_amounts: Option<OrderMoneyAmounts>,
1277 #[serde(default, skip_serializing_if = "Option::is_none")]
1278 pub pricing_options: Option<OrderPricingOptions>,
1279 #[serde(default, skip_serializing_if = "Option::is_none")]
1280 #[builder_into]
1281 pub reference_id: Option<String>,
1282 #[serde(default, skip_serializing_if = "Option::is_none")]
1283 pub refunds: Option<Vec<Refund>>,
1284 #[serde(default, skip_serializing_if = "Option::is_none")]
1285 pub return_amounts: Option<OrderMoneyAmounts>,
1286 #[serde(default, skip_serializing_if = "Option::is_none")]
1287 pub returns: Option<Vec<OrderReturn>>,
1288 #[serde(default, skip_serializing_if = "Option::is_none")]
1289 pub rewards: Option<Vec<OrderReward>>,
1290 #[serde(default, skip_serializing_if = "Option::is_none")]
1291 pub rounding_adjustment: Option<OrderRoundingAdjustment>,
1292 #[serde(default, skip_serializing_if = "Option::is_none")]
1293 pub service_charges: Option<Vec<OrderServiceCharge>>,
1294 #[serde(default, skip_serializing_if = "Option::is_none")]
1295 pub source: Option<OrderSource>,
1296 #[serde(default, skip_serializing_if = "Option::is_none")]
1297 pub state: Option<OrderState>,
1298 #[serde(default, skip_serializing_if = "Option::is_none")]
1299 pub taxes: Option<Vec<OrderLineItemTax>>,
1300 #[serde(default, skip_serializing_if = "Option::is_none")]
1301 pub tenders: Option<Vec<Tender>>,
1302 #[serde(default, skip_serializing_if = "Option::is_none")]
1303 #[builder_into]
1304 pub ticket_name: Option<String>,
1305 #[serde(default, skip_serializing_if = "Option::is_none")]
1306 pub total_discount_money: Option<Money>,
1307 #[serde(default, skip_serializing_if = "Option::is_none")]
1308 pub total_money: Option<Money>,
1309 #[serde(default, skip_serializing_if = "Option::is_none")]
1310 pub total_service_charge_money: Option<Money>,
1311 #[serde(default, skip_serializing_if = "Option::is_none")]
1312 pub total_tax_money: Option<Money>,
1313 #[serde(default, skip_serializing_if = "Option::is_none")]
1314 pub total_tip_money: Option<Money>,
1315 #[serde(default, skip_serializing_if = "Option::is_none")]
1316 #[builder_into]
1317 pub updated_at: Option<String>,
1318 #[serde(default, skip_serializing_if = "Option::is_none")]
1319 pub version: Option<i64>,
1320}
1321
1322impl AddField<OrderLineItem> for Order {
1323 fn add_field(&mut self, field: OrderLineItem) {
1324 if let Some(line_items) = self.line_items.as_mut() {
1325 line_items.push(field);
1326 } else {
1327 self.line_items = Some(vec![field]);
1328 }
1329 }
1330}
1331
1332impl AddField<OrderServiceCharge> for Order {
1333 fn add_field(&mut self, field: OrderServiceCharge) {
1334 if let Some(line_items) = self.service_charges.as_mut() {
1335 line_items.push(field);
1336 } else {
1337 self.service_charges = Some(vec![field]);
1338 }
1339 }
1340}
1341
1342
1343#[derive(Clone, Serialize, Debug, Deserialize)]
1344pub struct ChargeRequestAdditionalRecipient {
1345
1346}
1347
1348#[derive(Clone, Serialize, Debug, Deserialize)]
1349pub struct OrderLineItemDiscount {
1350 #[serde(default, skip_serializing_if = "Option::is_none")]
1351 pub amount_money: Option<Money>,
1352 #[serde(default, skip_serializing_if = "Option::is_none")]
1353 pub applied_money: Option<Money>,
1354 #[serde(default, skip_serializing_if = "Option::is_none")]
1355 pub catalog_object_id: Option<String>,
1356 #[serde(default, skip_serializing_if = "Option::is_none")]
1357 pub catalog_version: Option<i64>,
1358 #[serde(default, skip_serializing_if = "Option::is_none")]
1359 metadata: Option<HashMap<String, String>>,
1360 #[serde(default, skip_serializing_if = "Option::is_none")]
1361 pub name: Option<String>,
1362 #[serde(default, skip_serializing_if = "Option::is_none")]
1363 pub percentage: Option<String>,
1364 #[serde(default, skip_serializing_if = "Option::is_none")]
1365 pub pricing_rule_id: Option<String>,
1366 #[serde(default, skip_serializing_if = "Option::is_none")]
1367 pub reward_ids: Option<Vec<String>>,
1368 #[serde(default, skip_serializing_if = "Option::is_none")]
1369 pub scope: Option<OrderLineItemDiscountScope>,
1370 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1371 pub discount_type: Option<OrderLineItemDiscountType>,
1372 #[serde(default, skip_serializing_if = "Option::is_none")]
1373 pub uid: Option<String>,
1374}
1375
1376#[derive(Clone, Serialize, Debug, Deserialize)]
1377pub struct OrderFulfillment {
1378 #[serde(default, skip_serializing_if = "Option::is_none")]
1379 entries: Option<Vec<OrderFulfillmentFulfillmentEntry>>,
1380 #[serde(default, skip_serializing_if = "Option::is_none")]
1381 line_item_application: Option<OrderFulfillmentFulfillmentLineItemApplication>,
1382 #[serde(default, skip_serializing_if = "Option::is_none")]
1383 pub metadata: Option<HashMap<String, String>>,
1384 #[serde(default, skip_serializing_if = "Option::is_none")]
1385 pickup_details: Option<OrderFulfillmentPickupDetails>,
1386 #[serde(default, skip_serializing_if = "Option::is_none")]
1387 shipment_details: Option<OrderFulfillmentShipmentDetails>,
1388 #[serde(default, skip_serializing_if = "Option::is_none")]
1389 state: Option<String>,
1390 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1391 fulfillment_type: Option<String>,
1392 #[serde(default, skip_serializing_if = "Option::is_none")]
1393 uid: Option<String>,
1394}
1395
1396#[derive(Clone, Serialize, Debug, Deserialize)]
1397pub struct OrderFulfillmentFulfillmentEntry {
1398 pub line_item_uid: String,
1399 pub quantity: String,
1400 #[serde(default, skip_serializing_if = "Option::is_none")]
1401 pub metadata: Option<HashMap<String, String>>,
1402 #[serde(default, skip_serializing_if = "Option::is_none")]
1403 pub uid: Option<String>,
1404}
1405
1406#[derive(Clone, Serialize, Debug, Deserialize)]
1407pub struct OrderFulfillmentPickupDetails {
1408 #[serde(default, skip_serializing_if = "Option::is_none")]
1409 pub accepted_at: Option<String>,
1410 #[serde(default, skip_serializing_if = "Option::is_none")]
1411 pub auto_complete_duration: Option<String>,
1412 #[serde(default, skip_serializing_if = "Option::is_none")]
1413 pub cancel_reason: Option<String>,
1414 #[serde(default, skip_serializing_if = "Option::is_none")]
1415 pub canceled_at: Option<String>,
1416 #[serde(default, skip_serializing_if = "Option::is_none")]
1417 pub curbside_pickup_details: Option<OrderFulfillmentPickupDetailsCurbsidePickupDetails>,
1418 #[serde(default, skip_serializing_if = "Option::is_none")]
1419 pub expired_at: Option<String>,
1420 #[serde(default, skip_serializing_if = "Option::is_none")]
1421 pub expires_at: Option<String>,
1422 #[serde(default, skip_serializing_if = "Option::is_none")]
1423 pub is_curbside_pickup: Option<bool>,
1424 #[serde(default, skip_serializing_if = "Option::is_none")]
1425 pub note: Option<String>,
1426 #[serde(default, skip_serializing_if = "Option::is_none")]
1427 pub picked_up_at: Option<String>,
1428 #[serde(default, skip_serializing_if = "Option::is_none")]
1429 pub pickup_at: Option<String>,
1430 #[serde(default, skip_serializing_if = "Option::is_none")]
1431 pub pickup_window_duration: Option<String>,
1432 #[serde(default, skip_serializing_if = "Option::is_none")]
1433 pub placed_at: Option<String>,
1434 #[serde(default, skip_serializing_if = "Option::is_none")]
1435 pub prep_time_duration: Option<String>,
1436 #[serde(default, skip_serializing_if = "Option::is_none")]
1437 pub ready_at: Option<String>,
1438 #[serde(default, skip_serializing_if = "Option::is_none")]
1439 pub recipient: Option<OrderFulfillmentRecipient>,
1440 #[serde(default, skip_serializing_if = "Option::is_none")]
1441 pub rejected_at: Option<String>,
1442 #[serde(default, skip_serializing_if = "Option::is_none")]
1443 pub schedule_type: Option<OrderFulfillmentPickupDetailsScheduleType>,
1444}
1445
1446#[derive(Clone, Serialize, Debug, Deserialize)]
1447pub struct OrderFulfillmentPickupDetailsCurbsidePickupDetails {
1448 #[serde(default, skip_serializing_if = "Option::is_none")]
1449 pub buyer_arrived_at: Option<String>,
1450 #[serde(default, skip_serializing_if = "Option::is_none")]
1451 pub curbside_details: Option<String>,
1452}
1453
1454#[derive(Clone, Serialize, Debug, Deserialize)]
1455pub struct OrderFulfillmentRecipient {
1456 #[serde(default, skip_serializing_if = "Option::is_none")]
1457 pub address: Option<Address>,
1458 #[serde(default, skip_serializing_if = "Option::is_none")]
1459 pub customer_id: Option<String>,
1460 #[serde(default, skip_serializing_if = "Option::is_none")]
1461 pub display_name: Option<String>,
1462 #[serde(default, skip_serializing_if = "Option::is_none")]
1463 pub email_address: Option<String>,
1464 #[serde(default, skip_serializing_if = "Option::is_none")]
1465 pub phone_number: Option<String>,
1466}
1467
1468#[derive(Clone, Serialize, Debug, Deserialize)]
1469pub struct OrderFulfillmentShipmentDetails {
1470 cancel_reason: Option<String>,
1471 #[serde(default, skip_serializing_if = "Option::is_none")]
1472 canceled_at: Option<String>,
1473 #[serde(default, skip_serializing_if = "Option::is_none")]
1474 carrier: Option<String>,
1475 #[serde(default, skip_serializing_if = "Option::is_none")]
1476 expected_shipped_at: Option<String>,
1477 #[serde(default, skip_serializing_if = "Option::is_none")]
1478 failed_at: Option<String>,
1479 #[serde(default, skip_serializing_if = "Option::is_none")]
1480 failure_reason: Option<String>,
1481 #[serde(default, skip_serializing_if = "Option::is_none")]
1482 in_progress_at: Option<String>,
1483 #[serde(default, skip_serializing_if = "Option::is_none")]
1484 packaged_at: Option<String>,
1485 #[serde(default, skip_serializing_if = "Option::is_none")]
1486 placed_at: Option<String>,
1487 #[serde(default, skip_serializing_if = "Option::is_none")]
1488 recipient: Option<OrderFulfillmentRecipient>,
1489 shipped_at: Option<String>,
1490 #[serde(default, skip_serializing_if = "Option::is_none")]
1491 shipping_note: Option<String>,
1492 #[serde(default, skip_serializing_if = "Option::is_none")]
1493 shipping_type: Option<String>,
1494 #[serde(default, skip_serializing_if = "Option::is_none")]
1495 tracking_number: Option<String>,
1496 #[serde(default, skip_serializing_if = "Option::is_none")]
1497 tracking_url: Option<String>,
1498}
1499
1500#[derive(Clone, Serialize, Debug, Deserialize, Default, Builder)]
1501pub struct OrderLineItem {
1502 #[builder_into]
1503 pub quantity: String,
1504 #[serde(default, skip_serializing_if = "Option::is_none")]
1505 pub applied_discounts: Option<Vec<OrderLineItemAppliedDiscount>>,
1506 #[serde(default, skip_serializing_if = "Option::is_none")]
1507 pub applied_taxes: Option<Vec<OrderLineItemAppliedTax>>,
1508 #[serde(default, skip_serializing_if = "Option::is_none")]
1509 pub base_price_money: Option<Money>,
1510 #[serde(default, skip_serializing_if = "Option::is_none")]
1511 #[builder_into]
1512 pub catalog_object_id: Option<String>,
1513 #[serde(default, skip_serializing_if = "Option::is_none")]
1514 pub catalog_version: Option<i64>,
1515 #[serde(default, skip_serializing_if = "Option::is_none")]
1516 pub gross_sales_money: Option<Money>,
1517 #[serde(default, skip_serializing_if = "Option::is_none")]
1518 pub item_type: Option<OrderLineItemItemType>,
1519 #[serde(default, skip_serializing_if = "Option::is_none")]
1520 pub metadata: Option<HashMap<String, String>>,
1521 #[serde(default, skip_serializing_if = "Option::is_none")]
1522 pub modifiers: Option<Vec<OrderLineItemModifier>>,
1523 #[serde(default, skip_serializing_if = "Option::is_none")]
1524 pub name: Option<String>,
1525 #[serde(default, skip_serializing_if = "Option::is_none")]
1526 pub note: Option<String>,
1527 #[serde(default, skip_serializing_if = "Option::is_none")]
1528 pub pricing_blocklists: Option<OrderLineItemPricingBlocklists>,
1529 #[serde(default, skip_serializing_if = "Option::is_none")]
1530 pub quantity_unit: Option<OrderQuantityUnit>,
1531 #[serde(default, skip_serializing_if = "Option::is_none")]
1532 pub total_discount_money: Option<Money>,
1533 #[serde(default, skip_serializing_if = "Option::is_none")]
1534 pub total_money: Option<Money>,
1535 #[serde(default, skip_serializing_if = "Option::is_none")]
1536 pub total_tax_money: Option<Money>,
1537 #[serde(default, skip_serializing_if = "Option::is_none")]
1538 pub uid: Option<String>,
1539 #[serde(default, skip_serializing_if = "Option::is_none")]
1540 pub variation_name: Option<String>,
1541 #[serde(default, skip_serializing_if = "Option::is_none")]
1542 pub variation_total_price_money: Option<Money>,
1543 #[serde(default, skip_serializing_if = "Option::is_none")]
1544 pub api_reference_ids: Option<HashMap<String, String>>,
1545}
1546
1547#[derive(Clone, Serialize, Debug, Deserialize)]
1548pub struct OrderLineItemAppliedDiscount {
1549 pub discount_uid: String,
1550 #[serde(default, skip_serializing_if = "Option::is_none")]
1551 pub applied_money: Option<Money>,
1552 #[serde(default, skip_serializing_if = "Option::is_none")]
1553 pub uid: Option<String>,
1554}
1555
1556#[derive(Clone, Serialize, Debug, Deserialize)]
1557pub struct OrderLineItemAppliedTax {
1558 pub tax_uid: String,
1559 #[serde(default, skip_serializing_if = "Option::is_none")]
1560 pub applied_money: Option<Money>,
1561 #[serde(default, skip_serializing_if = "Option::is_none")]
1562 pub uid: Option<String>,
1563}
1564
1565#[derive(Clone, Serialize, Debug, Deserialize)]
1566pub struct OrderLineItemModifier {
1567 #[serde(default, skip_serializing_if = "Option::is_none")]
1568 pub base_price_money: Option<Money>,
1569 #[serde(default, skip_serializing_if = "Option::is_none")]
1570 pub catalog_object_id: Option<String>,
1571 #[serde(default, skip_serializing_if = "Option::is_none")]
1572 pub catalog_version: Option<i64>,
1573 #[serde(default, skip_serializing_if = "Option::is_none")]
1574 pub metadata: Option<HashMap<String, String>>,
1575 #[serde(default, skip_serializing_if = "Option::is_none")]
1576 pub name: Option<String>,
1577 #[serde(default, skip_serializing_if = "Option::is_none")]
1578 pub quantity: Option<String>,
1579 #[serde(default, skip_serializing_if = "Option::is_none")]
1580 pub total_price_money: Option<Money>,
1581 #[serde(default, skip_serializing_if = "Option::is_none")]
1582 pub uid: Option<String>,
1583}
1584
1585#[derive(Clone, Serialize, Debug, Deserialize)]
1586pub struct OrderLineItemPricingBlocklists {
1587 #[serde(default, skip_serializing_if = "Option::is_none")]
1588 pub blocked_discounts: Option<Vec<OrderLineItemPricingBlocklistsBlockedDiscount>>,
1589 #[serde(default, skip_serializing_if = "Option::is_none")]
1590 pub blocked_taxes: Option<Vec<OrderLineItemPricingBlocklistsBlockedTax>>,
1591}
1592
1593#[derive(Clone, Serialize, Debug, Deserialize)]
1594pub struct OrderLineItemPricingBlocklistsBlockedDiscount {
1595 #[serde(default, skip_serializing_if = "Option::is_none")]
1596 pub discount_catalog_object_id: Option<String>,
1597 #[serde(default, skip_serializing_if = "Option::is_none")]
1598 pub discount_uid: Option<String>,
1599 #[serde(default, skip_serializing_if = "Option::is_none")]
1600 pub uid: Option<String>,
1601}
1602
1603#[derive(Clone, Serialize, Debug, Deserialize)]
1604pub struct OrderLineItemPricingBlocklistsBlockedTax {
1605 #[serde(default, skip_serializing_if = "Option::is_none")]
1606 pub tax_catalog_object_id: Option<String>,
1607 #[serde(default, skip_serializing_if = "Option::is_none")]
1608 pub tax_uid: Option<String>,
1609 #[serde(default, skip_serializing_if = "Option::is_none")]
1610 pub uid: Option<String>,
1611}
1612
1613#[derive(Clone, Serialize, Debug, Deserialize)]
1614pub struct OrderQuantityUnit {
1615 #[serde(default, skip_serializing_if = "Option::is_none")]
1616 pub catalog_object_id: Option<String>,
1617 #[serde(default, skip_serializing_if = "Option::is_none")]
1618 pub catalog_version: Option<i64>,
1619 #[serde(default, skip_serializing_if = "Option::is_none")]
1620 pub measurement_unit: Option<MeasurementUnit>,
1621 #[serde(default, skip_serializing_if = "Option::is_none")]
1622 pub precision: Option<i32>,
1623}
1624
1625#[derive(Clone, Serialize, Debug, Deserialize)]
1626pub struct OrderMoneyAmounts {
1627 #[serde(default, skip_serializing_if = "Option::is_none")]
1628 pub discount_money: Option<Money>,
1629 #[serde(default, skip_serializing_if = "Option::is_none")]
1630 pub service_charge_money: Option<Money>,
1631 #[serde(default, skip_serializing_if = "Option::is_none")]
1632 pub tax_money: Option<Money>,
1633 #[serde(default, skip_serializing_if = "Option::is_none")]
1634 pub tip_money: Option<Money>,
1635 #[serde(default, skip_serializing_if = "Option::is_none")]
1636 pub total_money: Option<Money>,
1637}
1638
1639#[derive(Clone, Serialize, Debug, Deserialize)]
1640pub struct OrderPricingOptions {
1641 #[serde(default, skip_serializing_if = "Option::is_none")]
1642 pub auto_apply_discounts: Option<bool>,
1643 #[serde(default, skip_serializing_if = "Option::is_none")]
1644 pub auto_apply_taxes: Option<bool>,
1645}
1646
1647#[derive(Clone, Serialize, Debug, Deserialize)]
1648pub struct Refund {
1649 pub id: String,
1650 pub amount_money: Money,
1651 pub location_id: String,
1652 pub reason: String,
1653 pub status: RefundStatus,
1654 pub tender_id: String,
1655 #[serde(default, skip_serializing_if = "Option::is_none")]
1656 pub created_at: Option<String>,
1657 #[serde(default, skip_serializing_if = "Option::is_none")]
1658 pub processing_fee_money: Option<Money>,
1659 #[serde(default, skip_serializing_if = "Option::is_none")]
1660 pub transaction_id: Option<String>,
1661}
1662
1663#[derive(Clone, Serialize, Debug, Deserialize)]
1664pub struct OrderReturn {
1665 #[serde(default, skip_serializing_if = "Option::is_none")]
1666 pub return_amounts: Option<OrderMoneyAmounts>,
1667 #[serde(default, skip_serializing_if = "Option::is_none")]
1668 pub return_discounts: Option<Vec<OrderReturnDiscount>>,
1669 #[serde(default, skip_serializing_if = "Option::is_none")]
1670 pub return_line_items: Option<Vec<OrderReturnLineItem>>,
1671 #[serde(default, skip_serializing_if = "Option::is_none")]
1672 pub return_service_charges: Option<Vec<OrderReturnServiceCharge>>,
1673 #[serde(default, skip_serializing_if = "Option::is_none")]
1674 pub return_taxes: Option<Vec<OrderReturnTax>>,
1675 #[serde(default, skip_serializing_if = "Option::is_none")]
1676 pub rounding_adjustment: Option<OrderRoundingAdjustment>,
1677 #[serde(default, skip_serializing_if = "Option::is_none")]
1678 pub source_order_id: Option<String>,
1679 #[serde(default, skip_serializing_if = "Option::is_none")]
1680 pub uid: Option<String>,
1681}
1682
1683#[derive(Clone, Serialize, Debug, Deserialize)]
1684pub struct OrderReturnDiscount {
1685 #[serde(default, skip_serializing_if = "Option::is_none")]
1686 pub amount_money: Option<Money>,
1687 #[serde(default, skip_serializing_if = "Option::is_none")]
1688 pub applied_money: Option<Money>,
1689 #[serde(default, skip_serializing_if = "Option::is_none")]
1690 pub catalog_object_id: Option<String>,
1691 #[serde(default, skip_serializing_if = "Option::is_none")]
1692 pub catalog_version: Option<i64>,
1693 #[serde(default, skip_serializing_if = "Option::is_none")]
1694 pub name: Option<String>,
1695 #[serde(default, skip_serializing_if = "Option::is_none")]
1696 pub percentage: Option<String>,
1697 #[serde(default, skip_serializing_if = "Option::is_none")]
1698 pub scope: Option<String>,
1699 #[serde(default, skip_serializing_if = "Option::is_none")]
1700 pub source_discount_uid: Option<String>,
1701 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1702 pub discount_type: Option<OrderLineItemDiscountType>,
1703 #[serde(default, skip_serializing_if = "Option::is_none")]
1704 pub uid: Option<String>,
1705}
1706
1707#[derive(Clone, Serialize, Debug, Deserialize)]
1708pub struct OrderReturnLineItem {
1709 pub quantity: String,
1710 #[serde(default, skip_serializing_if = "Option::is_none")]
1711 pub applied_discounts: Option<Vec<OrderLineItemAppliedDiscount>>,
1712 #[serde(default, skip_serializing_if = "Option::is_none")]
1713 pub applied_taxes: Option<Vec<OrderLineItemAppliedTax>>,
1714 #[serde(default, skip_serializing_if = "Option::is_none")]
1715 pub base_price_money: Option<Money>,
1716 #[serde(default, skip_serializing_if = "Option::is_none")]
1717 pub catalog_object_id: Option<String>,
1718 #[serde(default, skip_serializing_if = "Option::is_none")]
1719 pub catalog_version: Option<i64>,
1720 #[serde(default, skip_serializing_if = "Option::is_none")]
1721 pub gross_return_money: Option<Money>,
1722 #[serde(default, skip_serializing_if = "Option::is_none")]
1723 pub item_type: Option<OrderLineItemItemType>,
1724 #[serde(default, skip_serializing_if = "Option::is_none")]
1725 pub name: Option<String>,
1726 #[serde(default, skip_serializing_if = "Option::is_none")]
1727 pub note: Option<String>,
1728 #[serde(default, skip_serializing_if = "Option::is_none")]
1729 pub quantity_unit: Option<OrderQuantityUnit>,
1730 #[serde(default, skip_serializing_if = "Option::is_none")]
1731 pub return_modifiers: Option<Vec<OrderReturnLineItemModifier>>,
1732 #[serde(default, skip_serializing_if = "Option::is_none")]
1733 pub source_line_item_uid: Option<String>,
1734 #[serde(default, skip_serializing_if = "Option::is_none")]
1735 pub total_discount_money: Option<Money>,
1736 #[serde(default, skip_serializing_if = "Option::is_none")]
1737 pub total_money: Option<Money>,
1738 #[serde(default, skip_serializing_if = "Option::is_none")]
1739 pub total_tax_money: Option<Money>,
1740 #[serde(default, skip_serializing_if = "Option::is_none")]
1741 pub uid: Option<String>,
1742 #[serde(default, skip_serializing_if = "Option::is_none")]
1743 pub variation_name: Option<String>,
1744 #[serde(default, skip_serializing_if = "Option::is_none")]
1745 pub variation_total_price_money: Option<Money>,
1746}
1747
1748#[derive(Clone, Serialize, Debug, Deserialize)]
1749pub struct OrderReturnLineItemModifier {
1750 #[serde(default, skip_serializing_if = "Option::is_none")]
1751 pub base_price_money: Option<Money>,
1752 #[serde(default, skip_serializing_if = "Option::is_none")]
1753 pub catalog_object_id: Option<String>,
1754 #[serde(default, skip_serializing_if = "Option::is_none")]
1755 pub catalog_version: Option<i64>,
1756 #[serde(default, skip_serializing_if = "Option::is_none")]
1757 pub name: Option<String>,
1758 #[serde(default, skip_serializing_if = "Option::is_none")]
1759 pub source_modifier_uid: Option<String>,
1760 #[serde(default, skip_serializing_if = "Option::is_none")]
1761 pub total_price_money: Option<Money>,
1762 #[serde(default, skip_serializing_if = "Option::is_none")]
1763 pub uid: Option<String>,
1764}
1765
1766#[derive(Clone, Serialize, Debug, Deserialize)]
1767pub struct OrderReturnServiceCharge {
1768 #[serde(default, skip_serializing_if = "Option::is_none")]
1769 pub amount_money: Option<Money>,
1770 #[serde(default, skip_serializing_if = "Option::is_none")]
1771 pub applied_money: Option<Money>,
1772 #[serde(default, skip_serializing_if = "Option::is_none")]
1773 pub applied_taxes: Option<Vec<OrderLineItemAppliedTax>>,
1774 #[serde(default, skip_serializing_if = "Option::is_none")]
1775 pub calculation_phase: Option<String>,
1776 #[serde(default, skip_serializing_if = "Option::is_none")]
1777 pub catalog_object_id: Option<String>,
1778 #[serde(default, skip_serializing_if = "Option::is_none")]
1779 pub catalog_version: Option<i64>,
1780 #[serde(default, skip_serializing_if = "Option::is_none")]
1781 pub name: Option<String>,
1782 #[serde(default, skip_serializing_if = "Option::is_none")]
1783 pub percentage: Option<String>,
1784 #[serde(default, skip_serializing_if = "Option::is_none")]
1785 pub source_service_charge_uid: Option<String>,
1786 #[serde(default, skip_serializing_if = "Option::is_none")]
1787 pub taxable: Option<bool>,
1788 #[serde(default, skip_serializing_if = "Option::is_none")]
1789 pub total_money: Option<Money>,
1790 #[serde(default, skip_serializing_if = "Option::is_none")]
1791 pub total_tax_money: Option<Money>,
1792 #[serde(default, skip_serializing_if = "Option::is_none")]
1793 pub uid: Option<String>,
1794}
1795
1796#[derive(Clone, Serialize, Debug, Deserialize)]
1797pub struct OrderReturnTax {
1798 #[serde(default, skip_serializing_if = "Option::is_none")]
1799 pub applied_money: Option<Money>,
1800 #[serde(default, skip_serializing_if = "Option::is_none")]
1801 pub catalog_object_id: Option<String>,
1802 #[serde(default, skip_serializing_if = "Option::is_none")]
1803 pub catalog_version: Option<i64>,
1804 #[serde(default, skip_serializing_if = "Option::is_none")]
1805 pub name: Option<String>,
1806 #[serde(default, skip_serializing_if = "Option::is_none")]
1807 pub percentage: Option<String>,
1808 #[serde(default, skip_serializing_if = "Option::is_none")]
1809 pub scope: Option<OrderLineItemTaxScope>,
1810 #[serde(default, skip_serializing_if = "Option::is_none")]
1811 pub source_tax_uid: Option<String>,
1812 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1813 pub calculation_type: Option<OrderLineItemTaxType>,
1814 #[serde(default, skip_serializing_if = "Option::is_none")]
1815 pub uid: Option<String>,
1816}
1817
1818#[derive(Clone, Serialize, Debug, Deserialize)]
1819pub struct OrderRoundingAdjustment {
1820 #[serde(default, skip_serializing_if = "Option::is_none")]
1821 pub amount_money: Option<Money>,
1822 #[serde(default, skip_serializing_if = "Option::is_none")]
1823 pub name: Option<String>,
1824 #[serde(default, skip_serializing_if = "Option::is_none")]
1825 pub uid: Option<String>,
1826}
1827
1828#[derive(Clone, Serialize, Debug, Deserialize)]
1829pub struct OrderReward {
1830 pub id: String,
1831 pub reward_tier_id: String
1832}
1833
1834#[derive(Clone, Serialize, Debug, Deserialize, Default, Builder)]
1835pub struct OrderServiceCharge {
1836 #[serde(default, skip_serializing_if = "Option::is_none")]
1837 pub amount_money: Option<Money>,
1838 #[serde(default, skip_serializing_if = "Option::is_none")]
1839 pub applied_money: Option<Money>,
1840 #[serde(default, skip_serializing_if = "Option::is_none")]
1841 pub applied_taxes: Option<Vec<OrderLineItemAppliedTax>>,
1842 #[serde(default, skip_serializing_if = "Option::is_none")]
1843 pub calculation_phase: Option<OrderServiceChargeCalculationPhase>,
1844 #[serde(default, skip_serializing_if = "Option::is_none")]
1845 #[builder_into]
1846 pub catalog_object_id: Option<String>,
1847 #[serde(default, skip_serializing_if = "Option::is_none")]
1848 pub catalog_version: Option<i64>,
1849 #[serde(default, skip_serializing_if = "Option::is_none")]
1850 pub metadata: Option<HashMap<String, String>>,
1851 #[serde(default, skip_serializing_if = "Option::is_none")]
1852 #[builder_into]
1853 #[builder_validate("is_some")]
1854 pub name: Option<String>,
1855 #[serde(default, skip_serializing_if = "Option::is_none")]
1856 #[builder_into]
1857 pub percentage: Option<String>,
1858 #[serde(default, skip_serializing_if = "Option::is_none")]
1859 pub taxable: Option<bool>,
1860 #[serde(default, skip_serializing_if = "Option::is_none")]
1861 pub total_money: Option<Money>,
1862 #[serde(default, skip_serializing_if = "Option::is_none")]
1863 pub total_tax_money: Option<Money>,
1864 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1865 pub service_charge_type: Option<OrderServiceChargeType>,
1866 #[serde(default, skip_serializing_if = "Option::is_none")]
1867 pub uid: Option<String>,
1868}
1869
1870#[derive(Clone, Serialize, Debug, Deserialize)]
1871pub struct OrderSource {
1872 #[serde(default, skip_serializing_if = "Option::is_none")]
1873 pub name: Option<String>
1874}
1875
1876#[derive(Clone, Serialize, Debug, Deserialize)]
1877pub struct OrderLineItemTax {
1878 pub applied_money: Option<Money>,
1879 #[serde(default, skip_serializing_if = "Option::is_none")]
1880 pub auto_applied: Option<bool>,
1881 #[serde(default, skip_serializing_if = "Option::is_none")]
1882 pub catalog_object_id: Option<String>,
1883 #[serde(default, skip_serializing_if = "Option::is_none")]
1884 pub catalog_version: Option<i64>,
1885 #[serde(default, skip_serializing_if = "Option::is_none")]
1886 pub metadata: Option<HashMap<String, String>>,
1887 #[serde(default, skip_serializing_if = "Option::is_none")]
1888 pub name: Option<String>,
1889 #[serde(default, skip_serializing_if = "Option::is_none")]
1890 pub percentage: Option<String>,
1891 #[serde(default, skip_serializing_if = "Option::is_none")]
1892 pub scope: Option<OrderLineItemTaxScope>,
1893 #[serde(rename = "type", default, skip_serializing_if = "Option::is_none")]
1894 pub calculation_method_type: Option<OrderLineItemTaxType>,
1895 #[serde(default, skip_serializing_if = "Option::is_none")]
1896 pub uid: Option<String>,
1897}
1898
1899#[derive(Clone, Serialize, Debug, Deserialize)]
1900pub struct Tender {
1901 #[serde(default, skip_serializing_if = "Option::is_none")]
1902 pub id: Option<String>,
1903 #[serde(rename = "type")]
1904 pub tender_type: TenderType,
1905 #[serde(default, skip_serializing_if = "Option::is_none")]
1906 pub amount_money: Option<Money>,
1907 #[serde(default, skip_serializing_if = "Option::is_none")]
1908 pub card_details: Option<TenderCardDetails>,
1909 #[serde(default, skip_serializing_if = "Option::is_none")]
1910 pub cash_details: Option<TenderCashDetails>,
1911 #[serde(default, skip_serializing_if = "Option::is_none")]
1912 pub created_at: Option<String>,
1913 #[serde(default, skip_serializing_if = "Option::is_none")]
1914 pub customer_id: Option<String>,
1915 #[serde(default, skip_serializing_if = "Option::is_none")]
1916 pub location_id: Option<String>,
1917 #[serde(default, skip_serializing_if = "Option::is_none")]
1918 pub note: Option<String>,
1919 #[serde(default, skip_serializing_if = "Option::is_none")]
1920 pub payment_id: Option<String>,
1921 #[serde(default, skip_serializing_if = "Option::is_none")]
1922 pub processing_fee_money: Option<Money>,
1923 #[serde(default, skip_serializing_if = "Option::is_none")]
1924 pub tip_money: Option<Money>,
1925 #[serde(default, skip_serializing_if = "Option::is_none")]
1926 pub transaction_id: Option<String>,
1927}
1928
1929#[derive(Clone, Serialize, Debug, Deserialize)]
1930pub struct TenderCardDetails {
1931 #[serde(default, skip_serializing_if = "Option::is_none")]
1932 pub card: Option<Card>,
1933 #[serde(default, skip_serializing_if = "Option::is_none")]
1934 pub entry_method: Option<TenderCardDetailsEntryMethod>,
1935 #[serde(default, skip_serializing_if = "Option::is_none")]
1936 pub status: Option<TenderCardDetailsStatus>
1937}
1938
1939#[derive(Clone, Serialize, Debug, Deserialize)]
1940pub struct TenderCashDetails {
1941 #[serde(default, skip_serializing_if = "Option::is_none")]
1942 pub buyer_tendered_money: Option<Money>,
1943 #[serde(default, skip_serializing_if = "Option::is_none")]
1944 pub change_back_money: Option<Money>,
1945}
1946
1947#[derive(Clone, Serialize, Debug, Deserialize)]
1948pub struct Checkout {
1949 pub id: String,
1950 #[serde(default, skip_serializing_if = "Option::is_none")]
1951 pub ask_for_shipping_address: Option<bool>,
1952 #[serde(default, skip_serializing_if = "Option::is_none")]
1953 pub checkout_page_url: Option<String>,
1954 #[serde(default, skip_serializing_if = "Option::is_none")]
1955 pub created_at: Option<String>,
1956 #[serde(default, skip_serializing_if = "Option::is_none")]
1957 pub merchant_support_email: Option<String>,
1958 #[serde(default, skip_serializing_if = "Option::is_none")]
1959 pub order: Option<Order>,
1960 #[serde(default, skip_serializing_if = "Option::is_none")]
1961 pub pre_populate_buyer_email: Option<String>,
1962 #[serde(default, skip_serializing_if = "Option::is_none")]
1963 pub pre_populate_shipping_address: Option<Address>,
1964 #[serde(default, skip_serializing_if = "Option::is_none")]
1965 pub redirect_url: Option<String>,
1966}
1967
1968#[derive(Clone, Serialize, Debug, Deserialize, Default, Builder)]
1969pub struct PaymentLink {
1970 #[serde(default, skip_serializing_if = "Option::is_none")]
1971 #[builder_into]
1972 #[builder_vis("private")]
1973 pub id: Option<String>,
1974 pub version: i32,
1975 #[serde(default, skip_serializing_if = "Option::is_none")]
1976 pub checkout_options: Option<CheckoutOptions>,
1977 #[serde(default, skip_serializing_if = "Option::is_none")]
1978 #[builder_into]
1979 pub created_at: Option<String>,
1980 #[serde(default, skip_serializing_if = "Option::is_none")]
1981 #[builder_into]
1982 pub description: Option<String>,
1983 #[serde(default, skip_serializing_if = "Option::is_none")]
1984 #[builder_into]
1985 pub order_id: Option<String>,
1986 #[serde(default, skip_serializing_if = "Option::is_none")]
1987 #[builder_into]
1988 pub payment_note: Option<String>,
1989 #[serde(default, skip_serializing_if = "Option::is_none")]
1990 pub pre_populated_data: Option<PrePopulatedData>,
1991 #[serde(default, skip_serializing_if = "Option::is_none")]
1992 #[builder_into]
1993 pub updated_at: Option<String>,
1994 #[serde(default, skip_serializing_if = "Option::is_none")]
1995 #[builder_into]
1996 pub url: Option<String>,
1997}
1998
1999#[derive(Clone, Serialize, Debug, Deserialize)]
2000pub struct CheckoutOptions {
2001 #[serde(default, skip_serializing_if = "Option::is_none")]
2002 pub accepted_payment_methods: Option<AcceptedPaymentMethods>,
2003 #[serde(default, skip_serializing_if = "Option::is_none")]
2004 pub allow_tipping: Option<bool>,
2005 #[serde(default, skip_serializing_if = "Option::is_none")]
2006 pub ask_for_shipping_address: Option<bool>,
2007 #[serde(default, skip_serializing_if = "Option::is_none")]
2008 pub custom_fields: Option<Vec<CustomField>>,
2009 #[serde(default, skip_serializing_if = "Option::is_none")]
2010 pub merchant_support_email: Option<String>,
2011 #[serde(default, skip_serializing_if = "Option::is_none")]
2012 pub redirect_url: Option<String>,
2013 #[serde(default, skip_serializing_if = "Option::is_none")]
2014 pub subscription_plan_id: Option<String>,
2015}
2016
2017#[derive(Clone, Serialize, Debug, Deserialize)]
2018pub struct AcceptedPaymentMethods {
2019 #[serde(default, skip_serializing_if = "Option::is_none")]
2020 pub afterpay_clearpay: Option<bool>,
2021 #[serde(default, skip_serializing_if = "Option::is_none")]
2022 pub apple_pay: Option<bool>,
2023 #[serde(default, skip_serializing_if = "Option::is_none")]
2024 pub cash_app_pay: Option<bool>,
2025 #[serde(default, skip_serializing_if = "Option::is_none")]
2026 pub google_pay: Option<bool>,
2027}
2028
2029#[derive(Clone, Serialize, Debug, Deserialize)]
2030pub struct CustomField {
2031 pub title: String,
2032}
2033
2034#[derive(Clone, Serialize, Debug, Deserialize)]
2035pub struct PrePopulatedData {
2036 #[serde(default, skip_serializing_if = "Option::is_none")]
2037 pub buyer_address: Option<Address>,
2038 #[serde(default, skip_serializing_if = "Option::is_none")]
2039 pub buyer_email: Option<String>,
2040 #[serde(default, skip_serializing_if = "Option::is_none")]
2041 pub buyer_phone_number: Option<String>,
2042}
2043
2044#[derive(Clone, Serialize, Debug, Deserialize)]
2045pub struct QuickPay {
2046 pub location_id: String,
2047 pub name: String,
2048 pub price_money: Money,
2049}
2050
2051#[derive(Clone, Serialize, Debug, Deserialize)]
2052pub struct CatalogQuery {
2053 #[serde(default, skip_serializing_if = "Option::is_none")]
2054 pub exact_query: Option<CatalogQueryExact>,
2055 #[serde(default, skip_serializing_if = "Option::is_none")]
2056 pub item_variations_for_item_option_values_query: Option<CatalogQueryItemVariationsForItemOptionValues>,
2057 #[serde(default, skip_serializing_if = "Option::is_none")]
2058 pub items_for_item_options_query: Option<CatalogQueryItemsForItemOptions>,
2059 #[serde(default, skip_serializing_if = "Option::is_none")]
2060 pub items_for_modifier_list_query: Option<CatalogQueryItemsForModifierList>,
2061 #[serde(default, skip_serializing_if = "Option::is_none")]
2062 pub items_for_tax_query: Option<CatalogQueryItemsForTax>,
2063 #[serde(default, skip_serializing_if = "Option::is_none")]
2064 pub prefix_query: Option<CatalogQueryPrefix>,
2065 #[serde(default, skip_serializing_if = "Option::is_none")]
2066 pub range_query: Option<CatalogQueryRange>,
2067 #[serde(default, skip_serializing_if = "Option::is_none")]
2068 pub set_query: Option<CatalogQuerySet>,
2069 #[serde(default, skip_serializing_if = "Option::is_none")]
2070 pub sorted_attribute_query: Option<CatalogQuerySortedAttribute>,
2071 #[serde(default, skip_serializing_if = "Option::is_none")]
2072 pub text_query: Option<CatalogQueryText>,
2073}
2074
2075#[derive(Clone, Serialize, Debug, Deserialize)]
2076pub struct CatalogQueryExact {
2077 pub attribute_name: String,
2078 pub attribute_value: String,
2079}
2080
2081#[derive(Clone, Serialize, Debug, Deserialize)]
2082pub struct CatalogQueryItemVariationsForItemOptionValues {
2083 #[serde(default, skip_serializing_if = "Option::is_none")]
2084 pub item_option_value_ids: Option<Vec<String>>,
2085}
2086
2087#[derive(Clone, Serialize, Debug, Deserialize)]
2088pub struct CatalogQueryItemsForItemOptions {
2089 #[serde(default, skip_serializing_if = "Option::is_none")]
2090 pub item_option_ids: Option<Vec<String>>,
2091}
2092
2093#[derive(Clone, Serialize, Debug, Deserialize)]
2094pub struct CatalogQueryItemsForModifierList {
2095 pub modifier_list_ids: Vec<String>,
2096}
2097
2098#[derive(Clone, Serialize, Debug, Deserialize)]
2099pub struct CatalogQueryItemsForTax {
2100 pub tax_ids: Vec<String>,
2101}
2102
2103#[derive(Clone, Serialize, Debug, Deserialize)]
2104pub struct CatalogQueryPrefix {
2105 pub attribute_name: String,
2106 pub attribute_prefix: String,
2107}
2108
2109#[derive(Clone, Serialize, Debug, Deserialize)]
2110pub struct CatalogQueryRange {
2111 pub attribute_name: String,
2112 #[serde(default, skip_serializing_if = "Option::is_none")]
2113 pub attribute_max_value: Option<i64>,
2114 #[serde(default, skip_serializing_if = "Option::is_none")]
2115 pub attribute_min_value: Option<i64>,
2116}
2117
2118#[derive(Clone, Serialize, Debug, Deserialize)]
2119pub struct CatalogQuerySet {
2120 pub attribute_name: String,
2121 pub attribute_values: Vec<String>,
2122}
2123
2124#[derive(Clone, Serialize, Debug, Deserialize)]
2125pub struct CatalogQuerySortedAttribute {
2126 pub attribute_name: String,
2127 #[serde(default, skip_serializing_if = "Option::is_none")]
2128 pub initial_attribute_value: Option<String>,
2129 #[serde(default, skip_serializing_if = "Option::is_none")]
2130 pub sort_order: Option<SortOrder>,
2131}
2132
2133#[derive(Clone, Serialize, Debug, Deserialize)]
2134pub struct CatalogQueryText {
2135 pub keywords: Vec<String>,
2136}
2137
2138#[derive(Clone, Serialize, Debug, Deserialize)]
2139pub struct CatalogInfoResponseLimits {
2140 #[serde(default, skip_serializing_if = "Option::is_none")]
2141 pub batch_delete_max_object_ids: Option<i32>,
2142 #[serde(default, skip_serializing_if = "Option::is_none")]
2143 pub batch_retrieve_max_object_ids: Option<i32>,
2144 #[serde(default, skip_serializing_if = "Option::is_none")]
2145 pub batch_upsert_max_objects_per_batch: Option<i32>,
2146 #[serde(default, skip_serializing_if = "Option::is_none")]
2147 pub batch_upsert_max_total_objects: Option<i32>,
2148 #[serde(default, skip_serializing_if = "Option::is_none")]
2149 pub search_max_page_limit: Option<i32>,
2150 #[serde(default, skip_serializing_if = "Option::is_none")]
2151 pub update_item_modifier_lists_max_item_ids: Option<i32>,
2152 #[serde(default, skip_serializing_if = "Option::is_none")]
2153 pub update_item_modifier_lists_max_modifier_lists_to_disable: Option<i32>,
2154 #[serde(default, skip_serializing_if = "Option::is_none")]
2155 pub update_item_modifier_lists_max_modifier_lists_to_enable: Option<i32>,
2156 #[serde(default, skip_serializing_if = "Option::is_none")]
2157 pub update_item_taxes_max_item_ids: Option<i32>,
2158 #[serde(default, skip_serializing_if = "Option::is_none")]
2159 pub update_item_taxes_max_taxes_to_disable: Option<i32>,
2160 #[serde(default, skip_serializing_if = "Option::is_none")]
2161 pub update_item_taxes_max_taxes_to_enable: Option<i32>,
2162}
2163
2164#[derive(Clone, Serialize, Debug, Deserialize)]
2165pub struct StandardUnitDescriptionGroup {
2166 #[serde(default, skip_serializing_if = "Option::is_none")]
2167 pub language_code: Option<String>,
2168 #[serde(default, skip_serializing_if = "Option::is_none")]
2169 pub standard_unit_descriptions: Option<Vec<StandardUnitDescription>>,
2170}
2171
2172#[derive(Clone, Serialize, Debug, Deserialize)]
2173pub struct StandardUnitDescription {
2174 #[serde(default, skip_serializing_if = "Option::is_none")]
2175 pub abbreviation: Option<String>,
2176 #[serde(default, skip_serializing_if = "Option::is_none")]
2177 pub name: Option<String>,
2178 #[serde(default, skip_serializing_if = "Option::is_none")]
2179 pub unit: Option<MeasurementUnit>,
2180}
2181
2182#[derive(Clone, Serialize, Debug, Deserialize)]
2183pub struct CustomAttributeFilter {
2184 #[serde(default, skip_serializing_if = "Option::is_none")]
2185 bool_filter: Option<bool>,
2186 #[serde(default, skip_serializing_if = "Option::is_none")]
2187 custom_attribute_definition_id: Option<String>,
2188 #[serde(default, skip_serializing_if = "Option::is_none")]
2189 key: Option<String>,
2190 #[serde(default, skip_serializing_if = "Option::is_none")]
2191 number_filter: Option<Range>,
2192 #[serde(default, skip_serializing_if = "Option::is_none")]
2193 selection_uids_filter: Option<Vec<String>>,
2194 #[serde(default, skip_serializing_if = "Option::is_none")]
2195 string_filter: Option<String>,
2196}
2197
2198#[derive(Clone, Serialize, Debug, Deserialize)]
2199pub struct Range {
2200 #[serde(default, skip_serializing_if = "Option::is_none")]
2201 pub max: Option<String>,
2202 #[serde(default, skip_serializing_if = "Option::is_none")]
2203 pub min: Option<String>,
2204}
2205
2206#[derive(Clone, Serialize, Debug, Deserialize)]
2207pub struct InventoryCount {
2208 #[serde(default, skip_serializing_if = "Option::is_none")]
2209 pub calculated_at: Option<String>,
2210 #[serde(default, skip_serializing_if = "Option::is_none")]
2211 pub catalog_object_id: Option<String>,
2212 #[serde(default, skip_serializing_if = "Option::is_none")]
2213 pub catalog_object_type: Option<CatalogObjectType>,
2214 #[serde(default, skip_serializing_if = "Option::is_none")]
2215 pub is_estimated: Option<bool>,
2216 #[serde(default, skip_serializing_if = "Option::is_none")]
2217 pub location_id: Option<String>,
2218 #[serde(default, skip_serializing_if = "Option::is_none")]
2219 pub quantity: Option<String>,
2220 #[serde(default, skip_serializing_if = "Option::is_none")]
2221 pub state: Option<InventoryState>,
2222}
2223
2224#[derive(Clone, Serialize, Debug, Deserialize, Default)]
2225pub struct InventoryChange {
2226 #[serde(default, skip_serializing_if = "Option::is_none")]
2227 pub adjustment: Option<InventoryAdjustment>,
2228 #[serde(default, skip_serializing_if = "Option::is_none")]
2229 pub measurement_unit: Option<CatalogMeasurementUnit>,
2230 #[serde(default, skip_serializing_if = "Option::is_none")]
2231 pub measurement_unit_id: Option<String>,
2232 #[serde(default, skip_serializing_if = "Option::is_none")]
2233 pub physical_count: Option<InventoryPhysicalCount>,
2234 #[serde(default, skip_serializing_if = "Option::is_none")]
2235 pub transfer: Option<InventoryTransfer>,
2236 #[serde(rename = "type")]
2237 pub inventory_change_type: InventoryChangeType,
2238}
2239
2240impl AddField<InventoryPhysicalCount> for InventoryChange {
2241 fn add_field(&mut self, field: InventoryPhysicalCount) {
2242 self.physical_count = Some(field)
2243 }
2244}
2245
2246#[derive(Clone, Serialize, Debug, Deserialize)]
2247pub struct InventoryAdjustment {
2248 #[serde(default, skip_serializing_if = "Option::is_none")]
2249 pub id: Option<String>,
2250 #[serde(default, skip_serializing_if = "Option::is_none")]
2251 pub adjustment_group: Option<InventoryAdjustmentGroup>,
2252 pub catalog_object_id: String,
2253 #[serde(default, skip_serializing_if = "Option::is_none")]
2254 pub catalog_object_type: Option<CatalogObjectType>,
2255 #[serde(default, skip_serializing_if = "Option::is_none")]
2256 pub created_at: Option<String>,
2257 #[serde(default, skip_serializing_if = "Option::is_none")]
2258 pub employee_id: Option<String>,
2259 #[serde(default, skip_serializing_if = "Option::is_none")]
2260 pub from_state: Option<InventoryState>,
2261 #[serde(default, skip_serializing_if = "Option::is_none")]
2262 pub goods_receipt_id: Option<String>,
2263 pub location_id: String,
2264 #[serde(default, skip_serializing_if = "Option::is_none")]
2265 pub occurred_at: Option<String>,
2266 #[serde(default, skip_serializing_if = "Option::is_none")]
2267 pub purchase_order_id: Option<String>,
2268 #[serde(default, skip_serializing_if = "Option::is_none")]
2269 pub quantity: Option<String>,
2270 #[serde(default, skip_serializing_if = "Option::is_none")]
2271 pub reference_id: Option<String>,
2272 #[serde(default, skip_serializing_if = "Option::is_none")]
2273 pub refund_id: Option<String>,
2274 #[serde(default, skip_serializing_if = "Option::is_none")]
2275 pub source: Option<SourceApplication>,
2276 #[serde(default, skip_serializing_if = "Option::is_none")]
2277 pub team_member_id: Option<String>,
2278 #[serde(default, skip_serializing_if = "Option::is_none")]
2279 pub to_state: Option<InventoryState>,
2280 #[serde(default, skip_serializing_if = "Option::is_none")]
2281 pub total_price_money: Option<Money>,
2282 #[serde(default, skip_serializing_if = "Option::is_none")]
2283 pub transaction_id: Option<String>,
2284}
2285
2286#[derive(Clone, Serialize, Debug, Deserialize)]
2287pub struct InventoryAdjustmentGroup {
2288 #[serde(default, skip_serializing_if = "Option::is_none")]
2289 pub id: Option<String>,
2290 #[serde(default, skip_serializing_if = "Option::is_none")]
2291 pub from_state: Option<InventoryState>,
2292 #[serde(default, skip_serializing_if = "Option::is_none")]
2293 pub root_adjustment_id: Option<String>,
2294 #[serde(default, skip_serializing_if = "Option::is_none")]
2295 pub to_state: Option<InventoryState>,
2296}
2297
2298#[derive(Clone, Serialize, Debug, Deserialize, Default, Builder)]
2299pub struct InventoryPhysicalCount {
2300 #[serde(default, skip_serializing_if = "Option::is_none")]
2301 #[builder_vis("private")]
2302 pub id: Option<String>,
2303 pub catalog_object_id: String,
2304 #[serde(default, skip_serializing_if = "Option::is_none")]
2305 pub catalog_object_type: Option<CatalogObjectType>,
2306 #[serde(default, skip_serializing_if = "Option::is_none")]
2307 pub created_at: Option<String>,
2308 pub location_id: String,
2309 pub occurred_at: String,
2310 pub quantity: String, #[serde(default, skip_serializing_if = "Option::is_none")]
2312 pub reference_id: Option<String>,
2313 #[serde(default, skip_serializing_if = "Option::is_none")]
2314 pub source: Option<SourceApplication>,
2315 pub state: InventoryState,
2316 #[serde(default, skip_serializing_if = "Option::is_none")]
2317 pub team_member_id: Option<String>,
2318}
2319
2320#[derive(Clone, Serialize, Debug, Deserialize)]
2321pub struct InventoryTransfer {
2322 #[serde(default, skip_serializing_if = "Option::is_none")]
2323 pub id: Option<String>,
2324 pub catalog_object_id: String,
2325 #[serde(default, skip_serializing_if = "Option::is_none")]
2326 pub catalog_object_type: Option<String>,
2327 #[serde(default, skip_serializing_if = "Option::is_none")]
2328 pub created_at: Option<String>,
2329 #[serde(default, skip_serializing_if = "Option::is_none")]
2330 pub employee_id: Option<String>,
2331 pub from_location_id: String,
2332 pub occurred_at: String,
2333 pub quantity: String,
2334 #[serde(default, skip_serializing_if = "Option::is_none")]
2335 pub reference_id: Option<String>,
2336 #[serde(default, skip_serializing_if = "Option::is_none")]
2337 pub source: Option<SourceApplication>,
2338 pub state: InventoryState,
2339 #[serde(default, skip_serializing_if = "Option::is_none")]
2340 pub team_member_id: Option<String>,
2341 pub to_location_id: String,
2342}
2343
2344#[derive(Clone, Serialize, Debug, Deserialize, Default)]
2345pub struct Payment {
2346 #[serde(default, skip_serializing_if = "Option::is_none")]
2347 pub id: Option<String>,
2348 #[serde(default, skip_serializing_if = "Option::is_none")]
2349 pub amount_money: Option<Money>,
2350 #[serde(default, skip_serializing_if = "Option::is_none")]
2351 pub app_fee_money: Option<Money>,
2352 #[serde(default, skip_serializing_if = "Option::is_none")]
2353 pub application_details: Option<ApplicationDetails>,
2354 #[serde(default, skip_serializing_if = "Option::is_none")]
2355 pub approved_money: Option<Money>,
2356 #[serde(default, skip_serializing_if = "Option::is_none")]
2357 pub bank_account_details: Option<BankAccountPaymentDetails>,
2358 #[serde(default, skip_serializing_if = "Option::is_none")]
2359 pub billing_address: Option<Address>,
2360 #[serde(default, skip_serializing_if = "Option::is_none")]
2361 pub buy_now_pay_later_details: Option<BuyNowPayLaterDetails>,
2362 #[serde(default, skip_serializing_if = "Option::is_none")]
2363 pub buyer_email_address: Option<String>,
2364 #[serde(default, skip_serializing_if = "Option::is_none")]
2365 pub capabilities: Option<Vec<String>>,
2366 #[serde(default, skip_serializing_if = "Option::is_none")]
2367 pub card_details: Option<CardPaymentDetails>,
2368 #[serde(default, skip_serializing_if = "Option::is_none")]
2369 pub cash_details: Option<CashPaymentDetails>,
2370 #[serde(default, skip_serializing_if = "Option::is_none")]
2371 pub created_at: Option<String>,
2372 #[serde(default, skip_serializing_if = "Option::is_none")]
2373 pub customer_id: Option<String>,
2374 #[serde(default, skip_serializing_if = "Option::is_none")]
2375 pub delay_action: Option<String>,
2376 #[serde(default, skip_serializing_if = "Option::is_none")]
2377 pub delay_duration: Option<String>,
2378 #[serde(default, skip_serializing_if = "Option::is_none")]
2379 pub delayed_until: Option<String>,
2380 #[serde(default, skip_serializing_if = "Option::is_none")]
2381 pub device_details: Option<DeviceDetails>,
2382 #[serde(default, skip_serializing_if = "Option::is_none")]
2383 pub external_details: Option<ExternalPaymentDetails>,
2384 #[serde(default, skip_serializing_if = "Option::is_none")]
2385 pub location_id: Option<String>,
2386 #[serde(default, skip_serializing_if = "Option::is_none")]
2387 pub note: Option<String>,
2388 #[serde(default, skip_serializing_if = "Option::is_none")]
2389 pub order_id: Option<String>,
2390 #[serde(default, skip_serializing_if = "Option::is_none")]
2391 pub processing_fee: Option<ProcessingFee>,
2392 #[serde(default, skip_serializing_if = "Option::is_none")]
2393 pub receipt_number: Option<String>,
2394 #[serde(default, skip_serializing_if = "Option::is_none")]
2395 pub receipt_url: Option<String>,
2396 #[serde(default, skip_serializing_if = "Option::is_none")]
2397 pub reference_id: Option<String>,
2398 #[serde(default, skip_serializing_if = "Option::is_none")]
2399 pub refund_ids: Option<Vec<String>>,
2400 #[serde(default, skip_serializing_if = "Option::is_none")]
2401 pub refunded_money: Option<Money>,
2402 #[serde(default, skip_serializing_if = "Option::is_none")]
2403 pub risk_evaluation: Option<RiskEvaluation>,
2404 #[serde(default, skip_serializing_if = "Option::is_none")]
2405 pub shipping_address: Option<Address>,
2406 #[serde(default, skip_serializing_if = "Option::is_none")]
2407 pub source_type: Option<PaymentSourceType>,
2408 #[serde(default, skip_serializing_if = "Option::is_none")]
2409 pub statement_description_identifier: Option<String>,
2410 #[serde(default, skip_serializing_if = "Option::is_none")]
2411 pub status: Option<String>,
2412 #[serde(default, skip_serializing_if = "Option::is_none")]
2413 pub team_member_id: Option<String>,
2414 #[serde(default, skip_serializing_if = "Option::is_none")]
2415 pub tip_money: Option<Money>,
2416 #[serde(default, skip_serializing_if = "Option::is_none")]
2417 pub total_money: Option<Money>,
2418 #[serde(default, skip_serializing_if = "Option::is_none")]
2419 pub updated_at: Option<String>,
2420 #[serde(default, skip_serializing_if = "Option::is_none")]
2421 pub version_token: Option<String>,
2422 #[serde(default, skip_serializing_if = "Option::is_none")]
2423 pub wallet_details: Option<DigitalWalletDetails>
2424}
2425
2426#[derive(Clone, Serialize, Debug, Deserialize)]
2427pub struct CashPaymentDetails {
2428 pub buyer_supplied_money: Money,
2429 #[serde(default, skip_serializing_if = "Option::is_none")]
2430 pub change_back_money: Option<Money>,
2431}
2432
2433#[derive(Clone, Serialize, Debug, Deserialize)]
2434pub struct ExternalPaymentDetails {
2435 pub source: String,
2436 #[serde(rename = "type")]
2437 pub payment_type: PaymentType,
2438 #[serde(default, skip_serializing_if = "Option::is_none")]
2439 pub source_fee_money: Option<Money>,
2440 #[serde(default, skip_serializing_if = "Option::is_none")]
2441 pub source_id: Option<String>,
2442}
2443
2444#[derive(Clone, Serialize, Debug, Deserialize)]
2445pub struct ApplicationDetails {
2446 #[serde(default, skip_serializing_if = "Option::is_none")]
2447 pub application_id: Option<String>,
2448 #[serde(default, skip_serializing_if = "Option::is_none")]
2449 pub square_product: Option<ApplicationDetailsExternalSquareProduct>,
2450}
2451
2452#[derive(Clone, Serialize, Debug, Deserialize)]
2453pub struct BankAccountPaymentDetails {
2454 #[serde(default, skip_serializing_if = "Option::is_none")]
2455 pub account_ownership_type: Option<BankAccountOwnershipType>,
2456 #[serde(default, skip_serializing_if = "Option::is_none")]
2457 pub ach_details: Option<ACHDetails>,
2458 #[serde(default, skip_serializing_if = "Option::is_none")]
2459 pub bank_name: Option<String>,
2460 #[serde(default, skip_serializing_if = "Option::is_none")]
2461 pub country: Option<String>,
2462 #[serde(default, skip_serializing_if = "Option::is_none")]
2463 pub errors: Option<Vec<ResponseError>>,
2464 #[serde(default, skip_serializing_if = "Option::is_none")]
2465 pub fingerprint: Option<String>,
2466 #[serde(default, skip_serializing_if = "Option::is_none")]
2467 pub statement_description: Option<String>,
2468 #[serde(default, skip_serializing_if = "Option::is_none")]
2469 pub transfer_type: Option<String>,
2470}
2471
2472#[derive(Clone, Serialize, Debug, Deserialize)]
2473pub struct ACHDetails {
2474 #[serde(default, skip_serializing_if = "Option::is_none")]
2475 pub account_number_suffix: Option<String>,
2476 #[serde(default, skip_serializing_if = "Option::is_none")]
2477 pub account_type: Option<BankAccountOwnershipType>,
2478 #[serde(default, skip_serializing_if = "Option::is_none")]
2479 pub routing_number: Option<String>,
2480}
2481
2482#[derive(Clone, Serialize, Debug, Deserialize)]
2483pub struct BuyNowPayLaterDetails {
2484 #[serde(default, skip_serializing_if = "Option::is_none")]
2485 pub afterpay_details: Option<AfterpayDetails>,
2486 #[serde(default, skip_serializing_if = "Option::is_none")]
2487 pub brand: Option<BuyNowPayLaterBrand>,
2488}
2489
2490#[derive(Clone, Serialize, Debug, Deserialize)]
2491pub struct AfterpayDetails {
2492 pub email_address: String,
2493}
2494
2495#[derive(Clone, Serialize, Debug, Deserialize)]
2496pub struct CardPaymentDetails {
2497 #[serde(default, skip_serializing_if = "Option::is_none")]
2498 pub application_cryptogram: Option<String>,
2499 #[serde(default, skip_serializing_if = "Option::is_none")]
2500 pub application_identifier: Option<String>,
2501 #[serde(default, skip_serializing_if = "Option::is_none")]
2502 pub application_name: Option<String>,
2503 #[serde(default, skip_serializing_if = "Option::is_none")]
2504 pub auth_result_code: Option<String>,
2505 #[serde(default, skip_serializing_if = "Option::is_none")]
2506 pub avs_status: Option<String>,
2507 #[serde(default, skip_serializing_if = "Option::is_none")]
2508 pub card: Option<Card>,
2509 #[serde(default, skip_serializing_if = "Option::is_none")]
2510 pub card_payment_timeline: Option<CardPaymentTimeline>,
2511 #[serde(default, skip_serializing_if = "Option::is_none")]
2512 pub cvv_status: Option<CCVStatus>,
2513 #[serde(default, skip_serializing_if = "Option::is_none")]
2514 pub entry_method: Option<TenderCardDetailsEntryMethod>,
2515 #[serde(default, skip_serializing_if = "Option::is_none")]
2516 pub errors: Option<Vec<ResponseError>>,
2517 #[serde(default, skip_serializing_if = "Option::is_none")]
2518 pub refund_requires_card_presence: Option<bool>,
2519 #[serde(default, skip_serializing_if = "Option::is_none")]
2520 pub statement_description: Option<String>,
2521 #[serde(default, skip_serializing_if = "Option::is_none")]
2522 pub status: Option<PaymentStatus>,
2523 #[serde(default, skip_serializing_if = "Option::is_none")]
2524 pub verification_method: Option<PaymentVerificationMethod>,
2525 #[serde(default, skip_serializing_if = "Option::is_none")]
2526 pub verification_results: Option<PaymentVerificationResults>,
2527}
2528
2529#[derive(Clone, Serialize, Debug, Deserialize)]
2530pub struct CardPaymentTimeline {
2531 #[serde(default, skip_serializing_if = "Option::is_none")]
2532 pub authorized_at: Option<String>,
2533 #[serde(default, skip_serializing_if = "Option::is_none")]
2534 pub captured_at: Option<String>,
2535 #[serde(default, skip_serializing_if = "Option::is_none")]
2536 pub voided_at: Option<String>,
2537}
2538
2539#[derive(Clone, Serialize, Debug, Deserialize)]
2540pub struct DeviceDetails {
2541 #[serde(default, skip_serializing_if = "Option::is_none")]
2542 pub device_id: Option<String>,
2543 #[serde(default, skip_serializing_if = "Option::is_none")]
2544 pub device_installation_id: Option<String>,
2545 pub device_name: Option<String>,
2546}
2547
2548#[derive(Clone, Serialize, Debug, Deserialize)]
2549pub struct ProcessingFee {
2550 #[serde(default, skip_serializing_if = "Option::is_none")]
2551 pub amount_money: Option<Money>,
2552 #[serde(default, skip_serializing_if = "Option::is_none")]
2553 pub effective_at: Option<String>,
2554 #[serde(default, skip_serializing_if = "Option::is_none")]
2555 pub fee_type: Option<ProcessingFeeType>,
2556}
2557
2558#[derive(Clone, Serialize, Debug, Deserialize)]
2559pub struct RiskEvaluation {
2560 #[serde(default, skip_serializing_if = "Option::is_none")]
2561 pub created_at: Option<String>,
2562 #[serde(default, skip_serializing_if = "Option::is_none")]
2563 pub risk_level: Option<RiskEvaluationRiskLevel>,
2564}
2565
2566#[derive(Clone, Serialize, Debug, Deserialize)]
2567pub struct DigitalWalletDetails {
2568 #[serde(default, skip_serializing_if = "Option::is_none")]
2569 brand: Option<DigitalWalletBrand>,
2570 #[serde(default, skip_serializing_if = "Option::is_none")]
2571 cash_app_details: Option<CashPaymentDetails>,
2572 #[serde(default, skip_serializing_if = "Option::is_none")]
2573 status: Option<DigitalWalletStatus>
2574}
2575
2576#[derive(Clone, Serialize, Debug, Deserialize)]
2577pub struct CashAppDetails {
2578 #[serde(default, skip_serializing_if = "Option::is_none")]
2579 pub buyer_cashtag: Option<String>,
2580 #[serde(default, skip_serializing_if = "Option::is_none")]
2581 pub buyer_country_code: Option<String>,
2582 #[serde(default, skip_serializing_if = "Option::is_none")]
2583 pub buyer_full_name: Option<String>,
2584}
2585
2586#[derive(Clone, Serialize, Debug, Deserialize)]
2587pub struct Site {
2588 #[serde(default, skip_serializing_if = "Option::is_none")]
2589 pub id: Option<String>,
2590 #[serde(default, skip_serializing_if = "Option::is_none")]
2591 pub created_at: Option<String>,
2592 #[serde(default, skip_serializing_if = "Option::is_none")]
2593 pub domain: Option<String>,
2594 #[serde(default, skip_serializing_if = "Option::is_none")]
2595 pub is_published: Option<bool>,
2596 #[serde(default, skip_serializing_if = "Option::is_none")]
2597 pub site_title: Option<String>,
2598 #[serde(default, skip_serializing_if = "Option::is_none")]
2599 pub updated_at: Option<String>,
2600}
2601
2602#[derive(Clone, Serialize, Debug, Deserialize, Default)]
2603pub struct TerminalCheckout {
2604 #[serde(default, skip_serializing_if = "Option::is_none")]
2605 pub id: Option<String>,
2606 pub amount_money: Option<Money>,
2607 pub device_options: Option<DeviceCheckoutOptions>,
2608 #[serde(default, skip_serializing_if = "Option::is_none")]
2609 pub app_fee_money: Option<Money>,
2610 #[serde(default, skip_serializing_if = "Option::is_none")]
2611 pub app_id: Option<String>,
2612 #[serde(default, skip_serializing_if = "Option::is_none")]
2613 pub cancel_reason: Option<ActionCancelReason>,
2614 #[serde(default, skip_serializing_if = "Option::is_none")]
2615 pub created_at: Option<String>,
2616 #[serde(default, skip_serializing_if = "Option::is_none")]
2617 pub customer_id: Option<String>,
2618 #[serde(default, skip_serializing_if = "Option::is_none")]
2619 pub deadline_duration: Option<String>,
2620 #[serde(default, skip_serializing_if = "Option::is_none")]
2621 pub location_id: Option<String>,
2622 #[serde(default, skip_serializing_if = "Option::is_none")]
2623 pub note: Option<String>,
2624 #[serde(default, skip_serializing_if = "Option::is_none")]
2625 pub order_id: Option<String>,
2626 #[serde(default, skip_serializing_if = "Option::is_none")]
2627 pub payment_ids: Option<Vec<String>>,
2628 #[serde(default, skip_serializing_if = "Option::is_none")]
2629 pub payment_options: Option<PaymentOptions>,
2630 #[serde(default, skip_serializing_if = "Option::is_none")]
2631 pub payment_type: Option<CheckoutOptionsPaymentType>,
2632 #[serde(default, skip_serializing_if = "Option::is_none")]
2633 pub reference_id: Option<String>,
2634 #[serde(default, skip_serializing_if = "Option::is_none")]
2635 pub status: Option<TerminalCheckoutStatus>,
2636 #[serde(default, skip_serializing_if = "Option::is_none")]
2637 pub updated_at: Option<String>,
2638}
2639
2640#[derive(Clone, Serialize, Debug, Deserialize, Default)]
2641pub struct DeviceCheckoutOptions {
2642 #[serde(default, skip_serializing_if = "Option::is_none")]
2643 pub device_id: Option<String>,
2644 #[serde(default, skip_serializing_if = "Option::is_none")]
2645 pub collect_signature: Option<bool>,
2646 #[serde(default, skip_serializing_if = "Option::is_none")]
2647 pub show_itemized_cart: Option<bool>,
2648 #[serde(default, skip_serializing_if = "Option::is_none")]
2649 pub skip_receipt_screen: Option<bool>,
2650 #[serde(default, skip_serializing_if = "Option::is_none")]
2651 pub tip_settings: Option<TipSettings>,
2652}
2653
2654#[derive(Clone, Serialize, Debug, Deserialize)]
2655pub struct TipSettings {
2656 #[serde(default, skip_serializing_if = "Option::is_none")]
2658 pub allow_tipping: Option<bool>,
2659 #[serde(default, skip_serializing_if = "Option::is_none")]
2661 pub custom_tip_field: Option<bool>,
2662 #[serde(default, skip_serializing_if = "Option::is_none")]
2665 pub separate_tip_screen: Option<bool>,
2666 #[serde(default, skip_serializing_if = "Option::is_none")]
2674 pub smart_tipping: Option<bool>,
2675 #[serde(default, skip_serializing_if = "Option::is_none")]
2678 pub tip_percentages: Option<Vec<i32>>,
2679}
2680
2681#[derive(Clone, Serialize, Debug, Deserialize)]
2682pub struct PaymentOptions {
2683 #[serde(default, skip_serializing_if = "Option::is_none")]
2684 pub accept_partial_authorization: Option<bool>,
2685 #[serde(default, skip_serializing_if = "Option::is_none")]
2686 pub autocomplete: Option<bool>,
2687 #[serde(default, skip_serializing_if = "Option::is_none")]
2688 pub delay_duration: Option<String>,
2689}
2690
2691#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2692pub struct TerminalCheckoutQuery {
2693 #[serde(default, skip_serializing_if = "Option::is_none")]
2694 pub filter: Option<TerminalCheckoutQueryFilter>,
2695 #[serde(default, skip_serializing_if = "Option::is_none")]
2696 pub sort: Option<TerminalCheckoutQuerySort>,
2697}
2698
2699#[derive(Clone, Debug, Serialize, Deserialize)]
2700pub struct TerminalCheckoutQueryFilter {
2701 #[serde(default, skip_serializing_if = "Option::is_none")]
2702 pub created_at: Option<TimeRange>,
2703 #[serde(default, skip_serializing_if = "Option::is_none")]
2704 pub device_id: Option<String>,
2705 #[serde(default, skip_serializing_if = "Option::is_none")]
2706 pub status: Option<TerminalCheckoutStatus>
2707}
2708
2709#[derive(Clone, Debug, Serialize, Deserialize)]
2710pub struct TerminalCheckoutQuerySort {
2711 #[serde(default, skip_serializing_if = "Option::is_none")]
2712 pub sort_order: Option<SortOrder>,
2713}
2714
2715#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2716pub struct TerminalRefund {
2717 #[serde(default, skip_serializing_if = "Option::is_none")]
2718 pub id: Option<String>,
2719 #[serde(default, skip_serializing_if = "Option::is_none")]
2720 pub amount_money: Option<Money>,
2721 #[serde(default, skip_serializing_if = "Option::is_none")]
2722 pub device_id: Option<String>,
2723 #[serde(default, skip_serializing_if = "Option::is_none")]
2724 pub payment_id: Option<String>,
2725 #[serde(default, skip_serializing_if = "Option::is_none")]
2726 pub reason: Option<String>,
2727 #[serde(default, skip_serializing_if = "Option::is_none")]
2728 pub app_id: Option<String>,
2729 #[serde(default, skip_serializing_if = "Option::is_none")]
2730 pub cancel_reason: Option<ActionCancelReason>,
2731 #[serde(default, skip_serializing_if = "Option::is_none")]
2732 pub created_at: Option<String>,
2733 #[serde(default, skip_serializing_if = "Option::is_none")]
2734 pub deadline_duration: Option<String>,
2735 #[serde(default, skip_serializing_if = "Option::is_none")]
2736 pub location_id: Option<String>,
2737 #[serde(default, skip_serializing_if = "Option::is_none")]
2738 pub order_id: Option<String>,
2739 #[serde(default, skip_serializing_if = "Option::is_none")]
2740 pub refund_id: Option<String>,
2741 #[serde(default, skip_serializing_if = "Option::is_none")]
2742 pub status: Option<String>,
2743 #[serde(default, skip_serializing_if = "Option::is_none")]
2744 pub updated_at: Option<TerminalCheckoutStatus>,
2745}
2746
2747#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2748pub struct TerminalRefundQuery {
2749 #[serde(default, skip_serializing_if = "Option::is_none")]
2750 pub filter: Option<TerminalRefundQueryFilter>,
2751 #[serde(default, skip_serializing_if = "Option::is_none")]
2752 pub sort: Option<TerminalCheckoutQuerySort>,
2753}
2754
2755#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2756pub struct TerminalRefundQueryFilter {
2757 #[serde(default, skip_serializing_if = "Option::is_none")]
2758 pub created_at: Option<TimeRange>,
2759 #[serde(default, skip_serializing_if = "Option::is_none")]
2760 pub device_id: Option<String>,
2761 #[serde(default, skip_serializing_if = "Option::is_none")]
2762 pub status: Option<TerminalCheckoutStatus>,
2763}
2764
2765#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2766pub struct SearchOrdersQuery {
2767 pub filter: Option<SearchOrdersFilter>,
2768 pub sort: Option<SearchOrdersSort>,
2769}
2770
2771#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2772pub struct SearchOrdersFilter {
2773 #[serde(default, skip_serializing_if = "Option::is_none")]
2774 pub custom_filter: Option<SearchOrdersCustomerFilter>,
2775 #[serde(default, skip_serializing_if = "Option::is_none")]
2776 pub date_time_filter: Option<SearchOrdersDateTimeFilter>,
2777 #[serde(default, skip_serializing_if = "Option::is_none")]
2778 pub fulfillment_filter: Option<SearchOrdersFulfillmentFilter>,
2779 #[serde(default, skip_serializing_if = "Option::is_none")]
2780 pub source_filter: Option<SearchOrdersSourceFilter>,
2781 #[serde(default, skip_serializing_if = "Option::is_none")]
2782 pub state_filter: Option<SearchOrdersStateFilter>,
2783}
2784
2785#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2786pub struct SearchOrdersCustomerFilter {
2787 #[serde(default, skip_serializing_if = "Option::is_none")]
2788 pub customer_ids: Option<String>,
2789}
2790
2791#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2792pub struct SearchOrdersDateTimeFilter {
2793 #[serde(default, skip_serializing_if = "Option::is_none")]
2794 pub closed_at: Option<TimeRange>,
2795 #[serde(default, skip_serializing_if = "Option::is_none")]
2796 pub created_at: Option<TimeRange>,
2797 #[serde(default, skip_serializing_if = "Option::is_none")]
2798 pub updated_at: Option<TimeRange>,
2799}
2800
2801#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2802pub struct SearchOrdersFulfillmentFilter {
2803 #[serde(default, skip_serializing_if = "Option::is_none")]
2804 pub fulfillment_states: Option<Vec<OrderFulfillmentState>>,
2805 #[serde(default, skip_serializing_if = "Option::is_none")]
2806 pub fulfillment_types: Option<Vec<OrderFulfillmentType>>
2807}
2808
2809#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2810pub struct SearchOrdersSourceFilter {
2811 #[serde(default, skip_serializing_if = "Option::is_none")]
2812 pub source_names: Option<Vec<String>>
2813}
2814
2815#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2816pub struct SearchOrdersStateFilter {
2817 #[serde(default, skip_serializing_if = "Option::is_none")]
2818 pub states: Option<Vec<OrderState>>
2819}
2820
2821#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2822pub struct SearchOrdersSort {
2823 #[serde(default, skip_serializing_if = "Option::is_none")]
2824 pub sort_field: Option<SearchOrdersSortField>,
2825 #[serde(default, skip_serializing_if = "Option::is_none")]
2826 pub sort_order: Option<SortOrder>,
2827}
2828
2829#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2830pub struct OrderEntry {
2831 #[serde(default, skip_serializing_if = "Option::is_none")]
2832 location_id: Option<String>,
2833 #[serde(default, skip_serializing_if = "Option::is_none")]
2834 order_id: Option<String>,
2835 #[serde(default, skip_serializing_if = "Option::is_none")]
2836 version: Option<i32>,
2837}
2838
2839#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2840pub struct SearchQueryAttribute {
2841 #[serde(skip_serializing_if = "Option::is_none")]
2842 pub filter: Option<CustomerFilter>,
2843 #[serde(skip_serializing_if = "Option::is_none")]
2844 pub sort: Option<CustomerSort>,
2845}
2846
2847#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2848pub struct CustomerFilter {
2849 #[serde(skip_serializing_if = "Option::is_none")]
2850 pub created_at: Option<TimeRange>,
2851 #[serde(skip_serializing_if = "Option::is_none")]
2852 pub creation_source: Option<CreationSource>,
2853 #[serde(skip_serializing_if = "Option::is_none")]
2854 pub email_address: Option<CustomerTextFilter>,
2855 #[serde(skip_serializing_if = "Option::is_none")]
2856 pub group_ids: Option<FilterValue>,
2857 #[serde(skip_serializing_if = "Option::is_none")]
2858 pub phone_number: Option<CustomerTextFilter>,
2859 #[serde(skip_serializing_if = "Option::is_none")]
2860 pub reference_id: Option<CustomerTextFilter>,
2861 #[serde(skip_serializing_if = "Option::is_none")]
2862 pub updated_at: Option<TimeRange>,
2863}
2864
2865#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2866pub struct CustomerSort {
2867 #[serde(skip_serializing_if = "Option::is_none")]
2868 pub field: Option<String>,
2869 #[serde(skip_serializing_if = "Option::is_none")]
2870 pub order: Option<String>,
2871}
2872
2873#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2874pub struct TimeRange {
2875 #[serde(skip_serializing_if = "Option::is_none")]
2876 pub end_at: Option<String>,
2877 #[serde(skip_serializing_if = "Option::is_none")]
2878 pub start_at: Option<String>,
2879}
2880
2881#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2882pub struct CustomerTextFilter {
2883 #[serde(skip_serializing_if = "Option::is_none")]
2884 pub exact: Option<String>,
2885 #[serde(skip_serializing_if = "Option::is_none")]
2886 pub fuzzy: Option<String>,
2887}
2888
2889#[derive(Clone, Debug, Serialize, Deserialize, Default)]
2890pub struct CreationSource {
2891 #[serde(skip_serializing_if = "Option::is_none")]
2892 pub rule: Option<String>,
2893 #[serde(skip_serializing_if = "Option::is_none")]
2894 pub values: Option<Vec<CustomerCreationSource>>,
2895}
2896
2897#[derive(Clone, Serialize, Debug, Deserialize)]
2898pub struct StartAtRange {
2899 pub end_at: String,
2900 pub start_at: String,
2901}
2902
2903#[derive(Clone, Serialize, Debug, Deserialize)]
2904pub struct SegmentFilter {
2905 pub service_variation_id: String,
2906 #[serde(skip_serializing_if = "Option::is_none")]
2907 pub team_member_id_filter: Option<FilterValue>,
2908}
2909
2910#[derive(Serialize, Debug, Deserialize, Default)]
2911pub struct AvailabilityQueryFilter {
2912 #[serde(skip_serializing_if = "Option::is_none")]
2913 pub start_at_range: Option<StartAtRange>,
2914 #[serde(skip_serializing_if = "Option::is_none")]
2915 pub booking_id: Option<String>,
2916 #[serde(skip_serializing_if = "Option::is_none")]
2917 pub location_id: Option<String>,
2918 #[serde(skip_serializing_if = "Option::is_none")]
2919 pub segment_filters: Option<Vec<SegmentFilter>>
2920}