Το idempotency σημαίνει ότι η εκτέλεση μιας λειτουργίας πολλές φορές έχει το ίδιο αποτέλεσμα με την εκτέλεσή της μία φορά. Έχει σημασία επειδή τα δίκτυα είναι αναξιόπιστα: όταν ένας client στέλνει ένα request και η απόκριση δεν φτάνει ποτέ, δεν μπορεί να ξέρει αν ο server το επεξεργάστηκε. Αν κάνει retry, μια μη idempotent λειτουργία μπορεί να τρέξει δύο φορές.
Το πρόβλημα
Client ──POST /payments {$100}──▶ Server (charges $100 ✓)
Client ◀────────X (timeout)────── Server (response lost)
Client ──POST /payments {$100}──▶ Server (charges $100 AGAIN ✗ → $200!)
