В данном конкретном случае: don't
использовать enum в клиентских библиотеках.Такая ситуация будет происходить каждый раз, когда вам нужно расширить это перечисление.Я полагаю, вы не хотите создавать новую версию API для каждого такого изменения.Внутри вашего клиента вы должны принять строковые значения и затем попытаться разобрать его.Если он проанализирован - ОК, если нет - задайте YourEnum.None
.
В общем: чтобы предотвратить внесение изменений, вы должны создать интеграционные тесты и запустить их на своем сервере CI.Если вы добавите новое правило в API - существующие интеграционные тесты не должны провалиться.При этом нет 100% гарантии.Это зависит от того, насколько вы дотошны при написании интеграционных тестов.Та же самая история, что и для юнит-тестирования.