First off, the HTTP specification requires that GET (and HEAD) requests be idempotent to enable caching.
Technically, PUT request are supposed to be idempotent, while GET and HEAD are supposed to be side-effect free (which is strictly stronger than idempotency).