Why not have a transient client generated ID for idempotency but a server generated ID for long term reference and storage?