Ответ заключается в том, что ваш API просто не предоставляет никаких методов, позволяющих создать недопустимое состояние.
Каждый метод должен выполнить полную и действительную транзакцию.Например, вместо методов добавления и удаления денег со счетов, у вас есть методы, которые переводят деньги между счетами.Любое ведение учета или уведомления, которые должны происходить, когда вы переводите деньги, должны выполняться (или, по крайней мере, помещаться в очередь) этими методами тоже.
Иногда для этого требуется создание специальных «действительных» состояний для транзакций, которые выв противном случае может считаться неполным.Например, когда вы резервируете места в театре, то есть место, где ваши места зарезервированы до определенного времени (5 минут или около того), когда вы их не оплатили.