summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/mattermost/mattermost-server/v5/model/cloud.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/mattermost/mattermost-server/v5/model/cloud.go')
-rw-r--r--vendor/github.com/mattermost/mattermost-server/v5/model/cloud.go84
1 files changed, 79 insertions, 5 deletions
diff --git a/vendor/github.com/mattermost/mattermost-server/v5/model/cloud.go b/vendor/github.com/mattermost/mattermost-server/v5/model/cloud.go
index e4fddbcd..ffd85a2a 100644
--- a/vendor/github.com/mattermost/mattermost-server/v5/model/cloud.go
+++ b/vendor/github.com/mattermost/mattermost-server/v5/model/cloud.go
@@ -3,13 +3,53 @@
package model
+import "strings"
+
+const (
+ EventTypeFailedPayment = "failed-payment"
+ EventTypeFailedPaymentNoCard = "failed-payment-no-card"
+ EventTypeSendAdminWelcomeEmail = "send-admin-welcome-email"
+ EventTypeTrialWillEnd = "trial-will-end"
+ EventTypeTrialEnded = "trial-ended"
+ JoinLimitation = "join"
+ InviteLimitation = "invite"
+)
+
+var MockCWS string
+
+type BillingScheme string
+
+const (
+ BillingSchemePerSeat = BillingScheme("per_seat")
+ BillingSchemeFlatFee = BillingScheme("flat_fee")
+)
+
+type RecurringInterval string
+
+const (
+ RecurringIntervalYearly = RecurringInterval("year")
+ RecurringIntervalMonthly = RecurringInterval("month")
+)
+
+type SubscriptionFamily string
+
+const (
+ SubscriptionFamilyCloud = SubscriptionFamily("cloud")
+ SubscriptionFamilyOnPrem = SubscriptionFamily("on-prem")
+)
+
// Product model represents a product on the cloud system.
type Product struct {
- ID string `json:"id"`
- Name string `json:"name"`
- Description string `json:"description"`
- PricePerSeat float64 `json:"price_per_seat"`
- AddOns []*AddOn `json:"add_ons"`
+ ID string `json:"id"`
+ Name string `json:"name"`
+ Description string `json:"description"`
+ PricePerSeat float64 `json:"price_per_seat"`
+ AddOns []*AddOn `json:"add_ons"`
+ SKU string `json:"sku"`
+ PriceID string `json:"price_id"`
+ Family SubscriptionFamily `json:"product_family"`
+ RecurringInterval RecurringInterval `json:"recurring_interval"`
+ BillingScheme BillingScheme `json:"billing_scheme"`
}
// AddOn represents an addon to a product.
@@ -85,6 +125,13 @@ type Subscription struct {
DNS string `json:"dns"`
IsPaidTier string `json:"is_paid_tier"`
LastInvoice *Invoice `json:"last_invoice"`
+ IsFreeTrial string `json:"is_free_trial"`
+ TrialEndAt int64 `json:"trial_end_at"`
+}
+
+// GetWorkSpaceNameFromDNS returns the work space name. For example from test.mattermost.cloud.com, it returns test
+func (s *Subscription) GetWorkSpaceNameFromDNS() string {
+ return strings.Split(s.DNS, ".")[0]
}
// Invoice model represents a cloud invoice
@@ -112,3 +159,30 @@ type InvoiceLineItem struct {
Type string `json:"type"`
Metadata map[string]interface{} `json:"metadata"`
}
+
+type CWSWebhookPayload struct {
+ Event string `json:"event"`
+ FailedPayment *FailedPayment `json:"failed_payment"`
+ CloudWorkspaceOwner *CloudWorkspaceOwner `json:"cloud_workspace_owner"`
+ SubscriptionTrialEndUnixTimeStamp int64 `json:"trial_end_time_stamp"`
+}
+
+type FailedPayment struct {
+ CardBrand string `json:"card_brand"`
+ LastFour int `json:"last_four"`
+ FailureMessage string `json:"failure_message"`
+}
+
+// CloudWorkspaceOwner is part of the CWS Webhook payload that contains information about the user that created the workspace from the CWS
+type CloudWorkspaceOwner struct {
+ UserName string `json:"username"`
+}
+type SubscriptionStats struct {
+ RemainingSeats int `json:"remaining_seats"`
+ IsPaidTier string `json:"is_paid_tier"`
+ IsFreeTrial string `json:"is_free_trial"`
+}
+
+type SubscriptionChange struct {
+ ProductID string `json:"product_id"`
+}