Skip to main content
An enrollment is a device’s membership of one program. enrollment_state holds one of six states and enrollment_step the step inside it. vpp_enrollment.update fires on every change, and those events are the enrollment’s history.

States

Steps

Suspensions

suspension_reasons lists why an enrollment is SUSPENDED, and is empty in every other state. Flatpeak raises and clears the reasons, and the enrollment returns to ACTIVE once every reason has cleared. DISPATCH_UNRESPONSIVE and TELEMETRY_STALLED are raised only after a grace period, so a short outage does not suspend a device.

Requests to leave

A customer or the OEM can ask to leave at any time, and the enrollment moves to LEAVING at step UNENROLLING. vpp_enrollment.update fires when the request arrives. You approve the request with approve, which ends the enrollment at once. You cannot refuse it: a request left unanswered ends on its own when the notice_days of the enrollment’s terms have passed, and with notice_days at 0 it ends as soon as it is made. Until then the device serves only the commitments it already has.

Actions

Two endpoints change an enrollment. Approve answers whatever the enrollment is waiting on from you, and unenroll ends it on your initiative. Each is valid only where listed; anywhere else it returns 422. Send a reason with unenroll, and the customer sees it where the OEM app supports that.

Terms

The enrollment keeps a copy of the program’s terms as they stood when the customer joined: rewards, opt_out_policy and notice_days. Rewards are priced from that copy. A later change to the program’s terms applies only to enrollments made after it.