409 not_managed_phone.
An API key can make these changes on its own workspace. In the app, admins and members can.
How a change is applied
Every change here works the same way:- The
PUTorPOSTanswers202at once, withstate: "pending". - Read the matching
GETuntilstateisappliedorfailed.
Only one change runs at a time. Another change is refused with
409 phone_busy until it settles.
unknown means the phone may or may not have taken the change. Further changes are refused with phone_busy until support resolves it, so an irreversible advertising-ID reset is never repeated by accident. Contact support if you see it.
The values the GET routes report are the ones the phone was actually given. A failed or unknown change does not change them.
Language
PUT …/language sets the phone’s system language and, optionally, its region.
GET …/language returns language and country as last set, or null if none has been set.
A language change is refused with 409 phone_busy while a session or live viewer is using the phone.
Identity
PUT …/identity sets the device identity that apps read. Send only the fields you want to change. At least one is required.
Text fields are 1 to 64 letters, digits, spaces or
. _ + -. Any other key, such as a raw Android system property, returns 400 identity_prop_refused.
The values stay through restarts and resets. To undo a change, set the old values again.
GET …/identity returns the latest value of each field you have set. Fields you never set keep the phone’s own values and are absent.
Advertising ID
POST …/advertising-id/reset gives the phone a new Google advertising ID. It takes no body.
GET …/advertising-id reports how the last reset ended. The ID itself is not returned.

