SharingReason

Represents an Apex sharing reason, which is used to indicate why sharing was implemented for a standard or custom object. Apex managed sharing allows developers to use Apex to programmatically share custom objects. When you use Apex managed sharing to share an object, only users with the “Modify All Data” permission can add or change the sharing on the object’s record, and the sharing access is maintained when the record owner changes or is deactivated. Sharing reasons for standard objects are available for objects that have a corresponding share object (for example, AccountShare, OpportunityShare) and whose org-wide default can be set to Private or Public Read-Only. Objects on the detail side of a master-detail relationship, which have no share object of their own, aren’t supported.

Use SharingReason to create, update, or delete sharing reason definitions for a custom object.

Parent Type 

This type extends Metadata and inherits its fields.

Version 

Sharing reasons for custom objects are available in API version 14.0 and later. Sharing reasons for standard objects are available in API version 68.0 and later.

Fields 

fullName 

  • Type: string

  • Required: No

  • Description: Required. Sharing reason name. The __c suffix is appended to custom sharing reasons.

    Inherited from Metadata, this field is defined in the WSDL for this metadata type. It must be specified when creating, updating, or deleting. See createMetadata() to see an example of this field specified for a call.

label 

  • Type: string
  • Required: Yes
  • Description: Required. Descriptive label for the sharing reason. Maximum of 40 characters.

Declarative Metadata Sample Definition 

The definition of a sharing reason in a custom object:

1<CustomObject xmlns="http://soap.sforce.com/2006/04/metadata">
2. . .
3    <sharingReasons>
4        <fullName>recruiter__c</fullName>
5        <label>Recruiter</label>
6    </sharingReasons>
7 . . .
8</CustomObject>

Limitations 

You can create a maximum of 10 custom sharing reasons per standard object. Reserved row cause names (for example, Manual, Team, Sharing Rule, Record Collection) can’t be used as sharing reason names.

Deleting a sharing reason deletes all share records on that object that use the reason. This can revoke access for users, so treat deletion as a destructive change.

Important

Managed Package Support 

Sharing reasons for standard and custom objects can be included in second-generation managed packages. On install, the fullName is prefixed with the package namespace (for example, myns__Compliance_Team). Packaged sharing reasons are locked in the subscriber org, so subscribers can’t edit the label or developer name, or delete the reason directly. Uninstalling a package that contains sharing reasons deletes those reasons and all associated shares.

Wildcard Support in the Manifest File 

This metadata type doesn’t support the wildcard character * (asterisk) in the package.xml manifest file. For information about using the manifest file, see Deploying and Retrieving Metadata with the Zip File.