Skip to content

Subscription.switch

POST /{namespace}/subscriptions/{subscription}/switch

Switch moves a Subscription to another Offer and prorates the current period.

Mode
do
Event
Subscription.switched

Inputs

InputTypeRequiredDescription
subscriptionSubscriptionrequiredThe Subscription to move.
offerOfferrequiredThe Offer to move to.
effectiveAtdatetimeWhen the move takes effect; moving existing Customers to a higher Price waits at least the notice period.

Outputs

OutputTypeRequiredDescription
subscriptionSubscriptionrequiredThe Subscription on its new Offer.

Effects

  • Emits Subscription.switched.
  • Performed by the Billing Specialist.
  • Two-way: it runs at once, in the try, send and do modes.
  • Bills or credits the prorated difference at once.
  • Moving existing Customers to a higher Price sends notice and switches each at its first renewal after the notice period.
  • A move to a cheaper Offer runs at once, with no Limit, Approval or delay window.

Refuses when

CheckErrorFixThen call
The input does not match the schema of the operation.invalid-inputRead the schema of the operation, then send every required field with the right type.Subscription.switch
The operation is part of an Offer the caller has not accepted or paid for.payment-requiredAccept the Offer named in the response, then retry the call.Offer.accept
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.Subscription.switch
The record is not in a state that allows this Verb, so the call is refused.refusedRead the record, run the Verb that moves it to an allowed state, then retry.Subscription.switch

When it waits

GateDefault
Decision classLow: two-way, nothing at stake
Delay windowNone: it runs once review passes.
LimitThe call Limit of the Permission it runs under.
Over the LimitIt waits pending for an Approval from the Founder. Approved, it runs; refused, it ends refused with limit-exceeded; unanswered by its deadline, it ends canceled.