Magento is committed to reducing total cost of ownership (TCO) for merchants. One of the ways to reduce TCO is prevention of breaking changes in future Magento releases through well-documented & thorough API coverage.
Magento'ssemantic version checker toolhelps us to avoid accidental breaking changes in existing PHP APIs. On the other hand, there is no mechanism for enforcing extensions to rely on Magento APIs only. In some cases, extensions depend on non-API Magento classes or interfaces for no obvious reason. In the others, they are forced to introduce non-API dependencies because API-appropriate classes and interfaces are not marked as such.
To remedy this, we are going to mark an additional 1000+ classes and interfaces as @api to increase the officially recognized API coverage. As a result, the number of non-API usages in third party extensions is expected to drop significantly, increasing upgradeability of the Magento stores and thereby reducing TCO.
All newly marked APIs belong to one of the categories:
Most of the interfaces in the system, which are currently not part of the API
Auto-generated classes and interfaces, like extension attributes and factories for API entities
Blocks with explicitly defined public methods, excluding inherited ones
Various customization points, like composite classes