Skip to main content

line_bot_sdk_messaging_api/models/
coupon_create_request.rs

1/*
2 * LINE Messaging API
3 *
4 * This document describes LINE Messaging API.
5 *
6 * The version of the OpenAPI document: 0.0.1
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use crate::models;
12use serde::{Deserialize, Serialize};
13
14/// CouponCreateRequest : Request object for creating a coupon. Contains all configurable coupon properties.
15#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct CouponCreateRequest {
17    #[serde(rename = "acquisitionCondition")]
18    pub acquisition_condition: Box<models::AcquisitionConditionRequest>,
19    /// URL of the barcode image associated with the coupon. Used for in-store redemption.
20    #[serde(rename = "barcodeImageUrl", skip_serializing_if = "Option::is_none")]
21    pub barcode_image_url: Option<String>,
22    /// Unique code to be presented by the user to redeem the coupon. Optional.
23    #[serde(rename = "couponCode", skip_serializing_if = "Option::is_none")]
24    pub coupon_code: Option<String>,
25    /// Detailed description of the coupon. Displayed to users.
26    #[serde(rename = "description", skip_serializing_if = "Option::is_none")]
27    pub description: Option<String>,
28    /// Coupon expiration time (epoch seconds). Coupon cannot be used after this time.
29    #[serde(rename = "endTimestamp")]
30    pub end_timestamp: i64,
31    /// URL of the main image representing the coupon. Displayed in the coupon list.
32    #[serde(rename = "imageUrl", skip_serializing_if = "Option::is_none")]
33    pub image_url: Option<String>,
34    /// Maximum number of times a single coupon ticket can be used. Use -1 to indicate no limit.
35    #[serde(rename = "maxUseCountPerTicket")]
36    pub max_use_count_per_ticket: i32,
37    /// Coupon start time (epoch seconds). Coupon can be used from this time.
38    #[serde(rename = "startTimestamp")]
39    pub start_timestamp: i64,
40    /// Title of the coupon. Displayed in the coupon list.
41    #[serde(rename = "title")]
42    pub title: String,
43    /// Conditions for using the coupon. Shown to users.
44    #[serde(rename = "usageCondition", skip_serializing_if = "Option::is_none")]
45    pub usage_condition: Option<String>,
46    #[serde(rename = "reward", skip_serializing_if = "Option::is_none")]
47    pub reward: Option<Box<models::CouponRewardRequest>>,
48    /// Visibility of the coupon. Determines who can see or acquire the coupon.
49    #[serde(rename = "visibility")]
50    pub visibility: Visibility,
51    /// Timezone for interpreting start and end timestamps.
52    #[serde(rename = "timezone")]
53    pub timezone: Timezone,
54}
55
56impl CouponCreateRequest {
57    /// Request object for creating a coupon. Contains all configurable coupon properties.
58    pub fn new(
59        acquisition_condition: models::AcquisitionConditionRequest,
60        end_timestamp: i64,
61        max_use_count_per_ticket: i32,
62        start_timestamp: i64,
63        title: String,
64        visibility: Visibility,
65        timezone: Timezone,
66    ) -> CouponCreateRequest {
67        CouponCreateRequest {
68            acquisition_condition: Box::new(acquisition_condition),
69            barcode_image_url: None,
70            coupon_code: None,
71            description: None,
72            end_timestamp,
73            image_url: None,
74            max_use_count_per_ticket,
75            start_timestamp,
76            title,
77            usage_condition: None,
78            reward: None,
79            visibility,
80            timezone,
81        }
82    }
83}
84/// Visibility of the coupon. Determines who can see or acquire the coupon.
85#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
86pub enum Visibility {
87    #[serde(rename = "UNLISTED")]
88    Unlisted,
89    #[serde(rename = "PUBLIC")]
90    Public,
91}
92
93impl Default for Visibility {
94    fn default() -> Visibility {
95        Self::Unlisted
96    }
97}
98/// Timezone for interpreting start and end timestamps.
99#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
100pub enum Timezone {
101    #[serde(rename = "ETC_GMT_MINUS_12")]
102    EtcGmtMinus12,
103    #[serde(rename = "ETC_GMT_MINUS_11")]
104    EtcGmtMinus11,
105    #[serde(rename = "PACIFIC_HONOLULU")]
106    PacificHonolulu,
107    #[serde(rename = "AMERICA_ANCHORAGE")]
108    AmericaAnchorage,
109    #[serde(rename = "AMERICA_LOS_ANGELES")]
110    AmericaLosAngeles,
111    #[serde(rename = "AMERICA_PHOENIX")]
112    AmericaPhoenix,
113    #[serde(rename = "AMERICA_CHICAGO")]
114    AmericaChicago,
115    #[serde(rename = "AMERICA_NEW_YORK")]
116    AmericaNewYork,
117    #[serde(rename = "AMERICA_CARACAS")]
118    AmericaCaracas,
119    #[serde(rename = "AMERICA_SANTIAGO")]
120    AmericaSantiago,
121    #[serde(rename = "AMERICA_ST_JOHNS")]
122    AmericaStJohns,
123    #[serde(rename = "AMERICA_SAO_PAULO")]
124    AmericaSaoPaulo,
125    #[serde(rename = "ETC_GMT_MINUS_2")]
126    EtcGmtMinus2,
127    #[serde(rename = "ATLANTIC_CAPE_VERDE")]
128    AtlanticCapeVerde,
129    #[serde(rename = "EUROPE_LONDON")]
130    EuropeLondon,
131    #[serde(rename = "EUROPE_PARIS")]
132    EuropeParis,
133    #[serde(rename = "EUROPE_ISTANBUL")]
134    EuropeIstanbul,
135    #[serde(rename = "EUROPE_MOSCOW")]
136    EuropeMoscow,
137    #[serde(rename = "ASIA_TEHRAN")]
138    AsiaTehran,
139    #[serde(rename = "ASIA_TBILISI")]
140    AsiaTbilisi,
141    #[serde(rename = "ASIA_KABUL")]
142    AsiaKabul,
143    #[serde(rename = "ASIA_TASHKENT")]
144    AsiaTashkent,
145    #[serde(rename = "ASIA_COLOMBO")]
146    AsiaColombo,
147    #[serde(rename = "ASIA_KATHMANDU")]
148    AsiaKathmandu,
149    #[serde(rename = "ASIA_ALMATY")]
150    AsiaAlmaty,
151    #[serde(rename = "ASIA_RANGOON")]
152    AsiaRangoon,
153    #[serde(rename = "ASIA_BANGKOK")]
154    AsiaBangkok,
155    #[serde(rename = "ASIA_TAIPEI")]
156    AsiaTaipei,
157    #[serde(rename = "ASIA_TOKYO")]
158    AsiaTokyo,
159    #[serde(rename = "AUSTRALIA_DARWIN")]
160    AustraliaDarwin,
161    #[serde(rename = "AUSTRALIA_SYDNEY")]
162    AustraliaSydney,
163    #[serde(rename = "ASIA_VLADIVOSTOK")]
164    AsiaVladivostok,
165    #[serde(rename = "ETC_GMT_PLUS_12")]
166    EtcGmtPlus12,
167    #[serde(rename = "PACIFIC_TONGATAPU")]
168    PacificTongatapu,
169}
170
171impl Default for Timezone {
172    fn default() -> Timezone {
173        Self::EtcGmtMinus12
174    }
175}