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's semantic version checker tool helps 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
The complete list of new APIs is available in the related PR.
If you have additional API candidates for 2.5 release, please leave your suggestion in the PR or create an issue at https://github.com/magento/magento2/issues.