idempotency key framework