1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
//! Model struct for OrderLineItemModifier type
use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use super::Money;
/// A [CatalogModifier].
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct OrderLineItemModifier {
/// A unique ID that identifies the modifier only within this order.
pub uid: Option<String>,
/// The catalog object ID referencing [CatalogModifier].
pub catalog_object_id: Option<String>,
/// The version of the catalog object that this modifier references.
pub catalog_version: Option<i64>,
/// The name of the item modifier.
pub name: Option<String>,
/// The quantity of the line item modifier. The modifier quantity can be 0 or more. For example, suppose
/// a restaurant offers a cheeseburger on the menu. When a buyer orders this item, the restaurant records
/// the purchase by creating an Order object with a line item for a burger. The line item includes a line
/// item modifier: the name is cheese and the quantity is 1. The buyer has the option to order extra
/// cheese (or no cheese). If the buyer chooses the extra cheese option, the modifier quantity increases
/// to 2. If the buyer does not want any cheese, the modifier quantity is set to 0.
pub quantity: Option<String>,
/// The base price for the modifier.
///
/// `base_price_money` is required for ad hoc modifiers. If both `catalog_object_id` and
/// `base_price_money` are set, `base_price_money` will override the predefined
/// [CatalogModifier] price.
pub base_price_money: Option<Money>,
/// **Read only** The total price of the item modifier for its line item. This is the modifier's
/// base_price_money multiplied by the line item's quantity.
pub total_price_money: Option<Money>,
/// Application-defined data attached to this order. Metadata fields are intended to store
/// descriptive references or associations with an entity in another system or store brief
/// information about the object. Square does not process this field; it only stores and returns
/// it in relevant API calls. Do not use metadata to store any sensitive information (such as
/// personally identifiable information or card details).
///
/// Keys written by applications must be 60 characters or less and must be in the character set
/// `[a-zA-Z0-9_-]`. Entries can also include metadata generated by Square. These keys are
/// prefixed with a namespace, separated from the key with a ':' character.
///
/// Values have a maximum length of 255 characters.
///
/// An application can have up to 10 entries per metadata field.
///
/// Entries written by applications are private and can only be read or modified by the same
/// application.
///
/// For more information,
/// see [Metadata](https://developer.squareup.com/docs/build-basics/metadata).
pub metadata: Option<HashMap<String, String>>,
}