Skip to main content
Restricted — requires a sponsorship program. See the Sponsorship API overview for access and auth.
Your integration should provision a member the moment they become eligible and remove them the moment they lapse. This endpoint is the safety net for the times a webhook is missed: you send DSS the full list of members you currently consider active, and DSS reconciles its live seats against it — cancelling seats you no longer list and reporting members you have that DSS never provisioned.

Request

Empty active_refs returns 400. This is deliberate — a truncated or empty export must never be read as “cancel everyone”. Always send your complete active list.

Safety guards

Because this endpoint cancels seats, two guards protect against a bad payload:
  • Empty roster → 400 invalid_request.
  • Mass-cancel threshold. If a run would cancel more than max_cancel, or (by default) more than 20% of your active seats and more than 10 seats, DSS refuses to apply and returns the diff with threshold_exceeded: true. Send override_threshold: true only once you’ve confirmed the drop is intended.

Response

200 OK. Each applied cancellation behaves exactly like removing a seat: the member is downgraded to Free, you receive a prorated credit, and tracking is paused best-effort. Run a nightly reconcile: first with apply: false to review the diff, then with apply: true once your export looks right. Keep sending your complete active list every time — the endpoint only ever cancels seats that are missing from it.