diff --git a/api4/cloud.go b/api4/cloud.go index 3f9106710c..208fa4b6b1 100644 --- a/api4/cloud.go +++ b/api4/cloud.go @@ -39,7 +39,7 @@ func (api *API) InitCloud() { // GET /api/v4/cloud/subscription api.BaseRoutes.Cloud.Handle("/subscription", api.APISessionRequired(getSubscription)).Methods("GET") api.BaseRoutes.Cloud.Handle("/subscription/invoices", api.APISessionRequired(getInvoicesForSubscription)).Methods("GET") - api.BaseRoutes.Cloud.Handle("/subscription/invoices/{invoice_id:in_[A-Za-z0-9]+}/pdf", api.APISessionRequired(getSubscriptionInvoicePDF)).Methods("GET") + api.BaseRoutes.Cloud.Handle("/subscription/invoices/{invoice_id:[A-Za-z0-9]+}/pdf", api.APISessionRequired(getSubscriptionInvoicePDF)).Methods("GET") api.BaseRoutes.Cloud.Handle("/subscription", api.APISessionRequired(changeSubscription)).Methods("PUT") // GET /api/v4/cloud/request-trial diff --git a/model/cloud.go b/model/cloud.go index 2985c929ea..a409c77f98 100644 --- a/model/cloud.go +++ b/model/cloud.go @@ -16,6 +16,8 @@ const ( EventTypeTriggerDelinquencyEmail = "trigger-delinquency-email" ) +const UpcomingInvoice = "upcoming" + var MockCWS string type BillingScheme string @@ -152,6 +154,7 @@ type Subscription struct { DNS string `json:"dns"` IsPaidTier string `json:"is_paid_tier"` LastInvoice *Invoice `json:"last_invoice"` + UpcomingInvoice *Invoice `json:"upcoming_invoice"` IsFreeTrial string `json:"is_free_trial"` TrialEndAt int64 `json:"trial_end_at"` DelinquentSince *int64 `json:"delinquent_since"` diff --git a/web/context.go b/web/context.go index 056dca354c..2286f806c6 100644 --- a/web/context.go +++ b/web/context.go @@ -743,7 +743,7 @@ func (c *Context) RequireInvoiceId() *Context { return c } - if len(c.Params.InvoiceId) != 27 { + if len(c.Params.InvoiceId) != 27 && c.Params.InvoiceId != model.UpcomingInvoice { c.SetInvalidURLParam("invoice_id") }