
Learning about unusual circumstances
In the real world, there are some strange problems that can be solved only with specialized or proprietary technology. Those situations are unusual, and examples of those circumstances may arise in smart home platforms, IoT (fieldbus) implementations with standardized models for B2B, ebMS3/AS4 messaging, and so on.
There are always situations and cases in the pragmatic REST service world where API designers will land in unusual circumstances and need some trade-offs for their API design, for example, enhancing legacy applications to RESTful service scenarios. Practically it isn't feasible to migrate the whole legacy software, especially in the case of propitiatory codes, and we call them special situations. However, there are design principles and patterns such as domain-driven design patterns that come in handy in those particular situations. These unusual or unique situations also come under design principles, and they advise APIs to provide specialized technologies only for such cases where it is absolutely necessary to solve a specific problem and not just because the situation is complicated.