diff --git a/api4/cloud.go b/api4/cloud.go index 6967a79936..4a9d0f8983 100644 --- a/api4/cloud.go +++ b/api4/cloud.go @@ -131,7 +131,13 @@ func changeSubscription(c *Context, w http.ResponseWriter, r *http.Request) { changedSub, err := c.App.Cloud().ChangeSubscription(userId, currentSubscription.ID, subscriptionChange) if err != nil { - c.Err = model.NewAppError("Api4.changeSubscription", "api.cloud.app_error", nil, "", http.StatusInternalServerError).Wrap(err) + appErr := model.NewAppError("Api4.changeSubscription", "api.cloud.app_error", nil, "", http.StatusInternalServerError).Wrap(err) + if err.Error() == "compliance-failed" { + c.Logger.Error("Compliance check failed", mlog.Err(err)) + appErr.StatusCode = http.StatusUnprocessableEntity + } + + c.Err = appErr return } diff --git a/model/cloud.go b/model/cloud.go index 7e74f3c17e..1f4a53c5c4 100644 --- a/model/cloud.go +++ b/model/cloud.go @@ -177,6 +177,7 @@ type Subscription struct { TrialEndAt int64 `json:"trial_end_at"` DelinquentSince *int64 `json:"delinquent_since"` OriginallyLicensedSeats int `json:"originally_licensed_seats"` + ComplianceBlocked string `json:"compliance_blocked"` } // Subscription History model represents true up event in a yearly subscription @@ -266,6 +267,7 @@ type SubscriptionChange struct { ProductID string `json:"product_id"` Seats int `json:"seats"` DowngradeFeedback *DowngradeFeedback `json:"downgrade_feedback"` + ShippingAddress *Address `json:"shipping_address"` } // TODO remove BoardsLimits.