Apex Managed Sharing provides developers with the ability to support an application to share requirements.
This type of sharing is available only with users to modify all data permissions. Only these users can add/change apex managed sharing.
Apex Managed Sharing uses a Sharing reason (Apex Sharing Reason)