What each error means and whether to retry.
Errors use one shape:
{ "error": { "code": "stale_timestamp", "message": "…", "details": [{ "path": "installId", "message": "Invalid UUID" }] } }
Switch on code, never on message.
Only stale_timestamp can succeed on retry.