Subscription cancellation (cancel at period end + resume) + checkin reason (#23) #24
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/cancel"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #23.
POST /v1/licenses/{id}/cancel— org-admin gated (same chain as seats), Paddle canceleffective_from=next_billing_period;CancelAtrecorded from Paddle'sscheduled_change.effective_at(fallback: license expiry) and surfaced inGET /v1/licensesascancelAt.POST /v1/licenses/{id}/cancel/resume— Paddlescheduled_change: null, clearsCancelAt.refreshWithclearsCancelAton renewals (extend=true) only — mid-cycle seat changes leave it alone./v1/checkin403 body now carriesreason: expired|revoked|unknown(server half of Cairn#308; backwards-compatible).paddleAPIgains aposthelper.Tests: full cancel→resume flow against a fake Paddle (period-end body, scheduled_change:null body, CancelAt set/cleared, list surfacing, 409 non-subscription, 401 anonymous), renewal-clears-CancelAt vs seat-change-does-not, and all four checkin reason paths.
Dashboard UI lands in cairn-site next.
reasonfield #23