Skip to main content

SubscriptionAPI

Billing operations for personal and team plans.

List plans and subscriptions

plans, _, err := client.SubscriptionAPI.
MainApiV1GetListPlansGet(ctx).
Execute()

subscriptions, _, err := client.SubscriptionAPI.
MainApiV1ListSubscriptionsPost(ctx).
Execute()

Create a subscription

subscriptionBody := analogwakatime.NewMainApiV1CreateSubscriptionPostRequest()
subscriptionBody.SetPriceId("PRICE_ID_FROM_PLANS")

subscription, _, err := client.SubscriptionAPI.
MainApiV1CreateSubscriptionPost(ctx).
MainApiV1CreateSubscriptionPostRequest(*subscriptionBody).
Execute()

soloPlus, _, err := client.SubscriptionAPI.
MainApiV1CreateSoloPlusSubscriptionPost(ctx).
Execute()

soloPlusPlus, _, err := client.SubscriptionAPI.
CreateSoloPlusPlusSubscription(ctx).
Execute()

teamSubscription, _, err := client.SubscriptionAPI.
MainApiV1CreateTeamSubscriptionPost(ctx).
Execute()

Cancel and invoices

const subscriptionID int32 = 42

cancelBody := analogwakatime.NewCancelPendingSubscriptionRequest(subscriptionID)
cancelled, _, err := client.SubscriptionAPI.
CancelSubscription(ctx).
CancelPendingSubscriptionRequest(*cancelBody).
Execute()

pendingCancellation, _, err := client.SubscriptionAPI.
CancelPendingSubscription(ctx).
CancelPendingSubscriptionRequest(*cancelBody).
Execute()

invoiceBody := analogwakatime.NewCreateInvoiceRequest()
invoiceBody.SetSubscriptionId(subscriptionID)
invoice, _, err := client.SubscriptionAPI.
CreateInvoice(ctx).
CreateInvoiceRequest(*invoiceBody).
Execute()

invoices, _, err := client.SubscriptionAPI.ListInvoices(ctx).Execute()

CancelSubscription requests cancellation. CancelPendingSubscription cancels a previously scheduled cancellation.

Stripe webhook (backend only)

Intended for a verified Stripe webhook receiver, not a browser or desktop client. Verify the Stripe signature before building this body.

object := analogwakatime.NewMainApiV1WebhooksStripePostRequestDataObject()
object.SetId("SUBSCRIPTION_ID_FROM_STRIPE")
object.SetStatus("active")

data := analogwakatime.NewMainApiV1WebhooksStripePostRequestData()
data.SetObject(*object)

webhookBody := analogwakatime.NewMainApiV1WebhooksStripePostRequest()
webhookBody.SetEvent("customer.subscription.updated")
webhookBody.SetData(*data)

processed, _, err := client.SubscriptionAPI.
MainApiV1WebhooksStripePost(ctx).
MainApiV1WebhooksStripePostRequest(*webhookBody).
Execute()