Поставщик должен предоставить вам данные, которые соответствуют контракту вашей веб-службы. Если это не так, вы делаете им одолжение, сообщая им, какие данные плохие (по крайней мере, по сравнению со всеми API, с которыми я недавно разработал).
Принятие клиентов, которые являются действительными, а те, которые не являются, может даже запутать вопросы, как в этой ситуации:
Я делаю список котлет ...; размером 100 и позвоните вашим CreateCustomers (Кастс). 20 плохо, но вы предоставляете информацию о том, почему. Оказывается, мой клерк ввода данных много опечаток. Проблема решена, я повторяю попытку CreateCustomers (custs), но я получаю сообщение об ошибке, что 80 из них уже существуют. Вы все еще создали 20, которые были исправлены (потому что вы сделали это в прошлый раз, когда я передавал данные)?
Основным преимуществом того, что все транзакции являются атомарными, является то, что если что-то не работает, то вы точно знаете, что состояние не изменилось после неудачной операции.