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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
//! Model struct for Subscription type
use serde::{Deserialize, Serialize};
use super::{
DateTime, Money, Phase, SubscriptionAction, SubscriptionSource,
enums::{SubscriptionStatus, Timezone},
};
/// Represents a subscription to a subscription plan by a subscriber.
///
/// For an overview of the `Subscription` type, see [Subscription
/// object](https://developer.squareup.com/docs/subscriptions-api/overview#subscription-object-overview).
#[derive(Clone, Debug, Default, Deserialize, Eq, PartialEq, Serialize)]
pub struct Subscription {
/// **Read only** The Square-assigned ID of the subscription.
///
/// Max Length: 255
pub id: Option<String>,
/// **Read only** The ID of the location associated with the subscription.
pub location_id: Option<String>,
/// **Read only** The ID of the subscribed-to [subscription plan](CatalogSubscriptionPlan).
pub plan_variation_id: Option<String>,
/// **Read only** The ID of the subscribing [customer](Customer) profile.
pub customer_id: Option<String>,
/// **Read only** The `YYYY-MM-DD`-formatted date (for example, 2013-01-15) to start the
/// subscription.
pub start_date: Option<String>,
/// The `YYYY-MM-DD`-formatted date (for example, 2013-01-15) to cancel the subscription, when
/// the subscription status changes to `CANCELED` and the subscription billing stops.
///
/// If this field is not set, the subscription ends according its subscription plan.
///
/// This field cannot be updated, other than being cleared.
pub canceled_date: Option<String>,
/// **Read only** The `YYYY-MM-DD-formatted` date up to when the subscriber is invoiced for the
/// subscription.
///
/// After the invoice is sent for a given billing period, this date will be the last day of the
/// billing period. For example, suppose for the month of May a subscriber gets an invoice (or
/// charged the card) on May 1. For the monthly billing scenario, this date is then set to May
/// 31.
pub charged_through_date: Option<String>,
/// **Read only** The current status of the subscription.
pub status: Option<SubscriptionStatus>,
/// The tax amount applied when billing the subscription. The percentage is expressed in decimal
/// form, using a `'.'` as the decimal separator and without a `'%'` sign. For example, a value
/// of `7.5` corresponds to 7.5%.
pub tax_percentage: Option<String>,
/// **Read only** The IDs of the [invoices](Invoice) created for the subscription, listed in
/// order when the invoices were created (newest invoices appear first).
pub invoice_ids: Option<Vec<String>>,
/// A custom price to apply for the subscription. If specified, it overrides the price
/// configured by the subscription plan.
pub price_override_money: Option<Money>,
/// The version of the object. When updating an object, the version supplied must match the
/// version in the database, otherwise the write will be rejected as conflicting.
pub version: Option<i64>,
/// Read only The timestamp when the subscription was created, in RFC 3339 format.
pub create_at: Option<DateTime>,
/// The ID of the [subscriber's card](Customer) used to charge for the subscription.
pub card_id: Option<String>,
/// **Read only** Timezone that will be used in date calculations for the subscription. Defaults
/// to the timezone of the location based on `location_id`. Format: the IANA Timezone Database
/// identifier for the location timezone (for example, `America/Los_Angeles`).
pub timezone: Option<Timezone>,
/// The origination details of the subscription.
pub source: Option<SubscriptionSource>,
/// The list of scheduled actions on this subscription. It is set only in the response from
/// [RetrieveSubscription](https://developer.squareup.com/reference/square/subscriptions-api/retrieve-subscription)
/// with the query parameter of `include=actions` or from
/// [SearchSubscriptions](https://developer.squareup.com/reference/square/subscriptions-api/search-subscriptions)
/// with the input parameter of `include:["actions"]`.
pub actions: Option<Vec<SubscriptionAction>>,
/// **Read only** The day of the month on which the subscription will issue invoices and publish orders.
pub monthly_billing_anchor_date: Option<i32>,
/// **Read only** array of phases for this subscription
pub phases: Option<Vec<Phase>>,
}