{"id":"sforce_api_objects_permissionset","title":"PermissionSet","content":"<a name=\"sforce_api_objects_permissionset\"><!-- --></a><h1 class=\"helpHead1\">PermissionSet</h1><div class=\"body\">\n<div class=\"shortdesc\">\n<span class=\"ph\" id=\"summary\"><a name=\"summary\"><!-- --></a>Represents a set of permissions that’s used to grant more\n      access to one or more users without changing their profile or reassigning profiles. </span><span class=\"ph\" id=\"ObjectVersion22\"><a name=\"ObjectVersion22\"><!-- --></a>This object is available in API version 22.0 and later.</span>\n</div>\n\n\t\t<p class=\"p\">PermissionSet has a read-only child relationship with PermissionSetGroup. PermissionSet contains the aggregated permissions for the group.</p>\n\n\t\t<p class=\"p\">You can use permission sets to grant access, but not to deny access.</p>\n\n\t\t<div class=\"section\">\n<h2 class=\"helpHead2\">Supported Calls</h2>\n\n\t\t\t\n\t\t\t<p class=\"p\"><samp class=\"codeph nolang\">create()</samp>, <samp class=\"codeph nolang\">delete()</samp>, <samp class=\"codeph nolang\">describeSObjects()</samp>, <samp class=\"codeph nolang\">query()</samp>, <samp class=\"codeph nolang\">retrieve()</samp>, <samp class=\"codeph nolang\">search()</samp>, <samp class=\"codeph nolang\">update()</samp>, <samp class=\"codeph nolang\">upsert()</samp></p>\n\n\t\t</div>\n\n\t\t<div class=\"section\">\n<h2 class=\"helpHead2\">Special Access Rules</h2>\n<p class=\"p\">As of Summer ’20 and later, only users who have one\n\t\t\t\tof these permissions can access this object:</p>\n<ul class=\"ul bulletList\">\n\t\t\t\t<li class=\"li\">View Setup and Configuration</li>\n\n\t\t\t\t<li class=\"li\">Manage Session Permission Set Activations</li>\n\n\t\t\t\t<li class=\"li\">Assign Permission Sets</li>\n\n\t\t\t\t<li class=\"li\">Manage Profiles and Permission Sets</li>\n\n\t\t\t</ul>\n<p class=\"p\">To view the following settings, assignments, and permissions for standard and\n\t\t\t\tcustom objects in a specified permission set, the View Setup and Configuration\n\t\t\t\tpermission is required.</p>\n<ul class=\"ul bulletList\">\n\t\t\t\t<li class=\"li\">Client settings</li>\n\n\t\t\t\t<li class=\"li\">Field permissions</li>\n\n\t\t\t\t<li class=\"li\">Layout assignments</li>\n\n\t\t\t\t<li class=\"li\">Object permissions</li>\n\n\t\t\t\t<li class=\"li\">Permission dependencies</li>\n\n\t\t\t\t<li class=\"li\">Permission set tab settings</li>\n\n\t\t\t\t<li class=\"li\">Permission set group components</li>\n\n\t\t\t\t<li class=\"li\">Record types</li>\n\n\t\t\t</ul>\n</div>\n\n\t\t<div class=\"section\">\n<h2 class=\"helpHead2\">Fields</h2>\n\n\t\t\t\n\t\t\t\n<div class=\"data colSort\"><table class=\"featureTable sort_table\" summary=\"\">\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t<thead class=\"thead sorted\" align=\"left\">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<th class=\"featureTableHeader  \" id=\"d1511598e147\">Field Name</th>\n\n\t\t\t\t\t\t\t<th class=\"featureTableHeader  \" id=\"d1511598e150\">Details</th>\n\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t</thead>\n\n\t\t\t\t\t<tbody class=\"tbody\">\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e147\" data-title=\"Field Name\"><span class=\"keyword parmname\">Description</span></td>\n\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e150\" data-title=\"Details\">\n\t\t\t\t\t\t\t\t<dl class=\"dl detailList\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Type</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">string</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Properties</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Create, Filter, Nillable, Group, Sort, Update</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Description</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">A description of the permission set. Limit: 255 characters.</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t</dl>\n\n\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e147\" data-title=\"Field Name\"><span class=\"keyword parmname\" id=\"HasActivationRequired\"><a name=\"HasActivationRequired\"><!-- --></a>HasActivationRequired</span></td>\n\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e150\" data-title=\"Details\">\n\t\t\t\t\t\t\t\t<dl class=\"dl detailList\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Type</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">boolean</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Properties</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Create, Defaulted on create, Filter, Group, Sort, Update</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Description</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Indicates whether the permission set requires an associated active session (<samp class=\"codeph nolang\">true</samp>) or not (<samp class=\"codeph nolang\">false</samp>).</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t</dl>\n\n\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e147\" data-title=\"Field Name\"><span class=\"keyword parmname\">IsCustom</span></td>\n\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e150\" data-title=\"Details\">\n\t\t\t\t\t\t\t\t<dl class=\"dl detailList\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Type</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">boolean</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Properties</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Defaulted on create, Filter, Group, Sort</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Description</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">If <samp class=\"codeph nolang\">true</samp>, the permission set is custom (created by an admin); if <samp class=\"codeph nolang\">false</samp>, the\n\t\t\t\t\t\t\t\t\t\t\tpermission set is standard and related to a specific permission set license.</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t</dl>\n\n\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e147\" data-title=\"Field Name\"><span class=\"keyword parmname\" id=\"IsOwnedByProfile\"><a name=\"IsOwnedByProfile\"><!-- --></a>IsOwnedByProfile</span></td>\n\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e150\" data-title=\"Details\">\n\t\t\t\t\t\t\t\t<dl class=\"dl detailList\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Type</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">boolean</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Properties</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Defaulted on create, Filter, Group, Sort</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Description</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">If <samp class=\"codeph nolang\">true</samp>, the permission set is owned by a profile. Available in API version 25.0 and later.</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t</dl>\n\n\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e147\" data-title=\"Field Name\"><span class=\"keyword parmname\">Label</span></td>\n\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e150\" data-title=\"Details\">\n\t\t\t\t\t\t\t\t<dl class=\"dl detailList\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Type</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">string</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Properties</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Create, Filter, Group, Sort, Update</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Description</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">The permission set label, which corresponds to <strong class=\"ph uicontrol\">Label</strong> in the user interface. Limit: 80 characters.</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t</dl>\n\n\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e147\" data-title=\"Field Name\"><span class=\"keyword parmname\">LicenseId</span></td>\n\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e150\" data-title=\"Details\">\n\t\t\t\t\t\t\t\t<dl class=\"dl detailList\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Type</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">reference</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Properties</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Create, Filter, Group, Nillable, Sort</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Description</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">The ID of either the related PermissionSetLicense or UserLicense associated with this\n\t\t\t\t\t\t\t\t\t\t\tpermission set. Available in API version 38.0 and later.\n\t\t\t\t\t\t\t\t\t\t\tUse this field instead of\n\t\t\t\t\t\t\t\t\t\t\t\t<span class=\"keyword parmname\">UserLicenseId</span>, which is\n\t\t\t\t\t\t\t\t\t\t\tdeprecated and only available up to API Version\n\t\t\t\t\t\t\t\t\t\t\t37.0.</dd>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">This is a polymorphic relationship field.</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Relationship Name</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">License</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Relationship Type</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Lookup</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Refers To</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">PermissionSetLicense, UserLicense</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t</dl>\n\n\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e147\" data-title=\"Field Name\"><span class=\"keyword parmname\">Name</span></td>\n\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e150\" data-title=\"Details\">\n\t\t\t\t\t\t\t\t<dl class=\"dl detailList\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Type</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">string</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Properties</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Create, Filter, Group, Sort, Update</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Description</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">The unique name of the object in the API. This name can contain only underscores and alphanumeric characters, and must be unique in your organization. It\n\t\t\t\t\t\t\t\t\t\t\tmust begin with a letter, not include spaces, not end with an underscore, and not contain two consecutive underscores. Corresponds to <strong class=\"ph uicontrol\">API\n\t\t\t\t\t\t\t\t\t\t\tName</strong> in the user interface. Limit: 80 characters.</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t</dl>\n\n\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e147\" data-title=\"Field Name\"><span class=\"keyword parmname\">NamespacePrefix</span></td>\n\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e150\" data-title=\"Details\">\n\t\t\t\t\t\t\t\t<dl class=\"dl detailList\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Type</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">string</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Properties</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Filter, Group, Nillable, Sort</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Description</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">The namespace prefix for a permission set that's been installed as part of a managed package. If the permission set isn't packaged or is part of an\n\t\t\t\t\t\t\t\t\t\t\tunmanaged package, this value is empty. Available in API version 23.0 and later.</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t</dl>\n\n\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e147\" data-title=\"Field Name\"><span class=\"keyword parmname\">Permissions<var class=\"keyword varname\">PermissionName</var></span></td>\n\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e150\" data-title=\"Details\">\n\t\t\t\t\t\t\t\t<dl class=\"dl detailList\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Type</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">boolean</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Properties</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Create, Filter, Update</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Description</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">One field for each permission. If <samp class=\"codeph nolang\">true</samp>, users\n\t\t\t\t\t\t\t\t\t\t\tassigned to this permission set have the named\n\t\t\t\t\t\t\t\t\t\t\tpermission. The number of fields varies depending on the\n\t\t\t\t\t\t\t\t\t\t\tpermissions for the organization and license type. To\n\t\t\t\t\t\t\t\t\t\t\tget a list of available permissions in the SOAP API, use\n\t\t\t\t\t\t\t\t\t\t\t\t<samp class=\"codeph nolang\">describeSObjects()</samp>.</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t</dl>\n\n\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e147\" data-title=\"Field Name\"><span class=\"keyword parmname\">PermissionSetGroupId</span></td>\n\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e150\" data-title=\"Details\">\n\t\t\t\t\t\t\t\t<dl class=\"dl detailList\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Type</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">reference</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Properties</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Filter, Group, Nillable, Sort</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Description</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">If the permission set is owned by a permission set\n\t\t\t\t\t\t\t\t\t\t\tgroup, this field returns the ID of the permission set\n\t\t\t\t\t\t\t\t\t\t\tgroup. If the permission set isn’t owned by a\n\t\t\t\t\t\t\t\t\t\t\tpermission set group, this field returns a null value.\n\t\t\t\t\t\t\t\t\t\t\tAvailable in API version 45.0 and later.</dd>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">This is a relationship field.</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Relationship Name</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">PermissionSetGroup</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Relationship Type</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Lookup</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Refers To</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">PermissionSetGroup</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t</dl>\n\n\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e147\" data-title=\"Field Name\"><span class=\"keyword parmname\">ProfileId</span></td>\n\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e150\" data-title=\"Details\">\n\t\t\t\t\t\t\t\t<dl class=\"dl detailList\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Type</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">reference</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Properties</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Filter, Group, Nillable, Sort</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Description</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">If the permission set is owned by a profile, this field\n\t\t\t\t\t\t\t\t\t\t\treturns the ID of the Profile. If the permission set isn’t owned by a\n\t\t\t\t\t\t\t\t\t\t\tprofile, this field returns a null value. Available in\n\t\t\t\t\t\t\t\t\t\t\tAPI version 25.0 and later.</dd>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">This is a relationship field.</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Relationship Name</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Profile</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Relationship Type</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Lookup</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Refers To</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Profile</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t</dl>\n\n\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e147\" data-title=\"Field Name\"><span class=\"keyword parmname\">Type</span></td>\n\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e150\" data-title=\"Details\">\n\t\t\t\t\t\t\t\t<dl class=\"dl detailList\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Type</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">reference</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Properties</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Filter, Group, Nillable, Sort</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Description</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\"> Available in API version 46.0 and later.</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t</dl>\n\n\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e147\" data-title=\"Field Name\"><span class=\"keyword parmname\" id=\"UserLicenseId\"><a name=\"UserLicenseId\"><!-- --></a>UserLicenseId</span></td>\n\n\t\t\t\t\t\t\t<td class=\"entry\" headers=\"d1511598e150\" data-title=\"Details\">\n\t\t\t\t\t\t\t\t<dl class=\"dl detailList\">\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Type</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">reference</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Properties</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">Create, Filter, Group, Nillable, Sort</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t<dt class=\"dt dlterm\">Description</dt>\n\n\t\t\t\t\t\t\t\t\t\t<dd class=\"dd\">ID of the UserLicense associated with this permission set. This field is\n\t\t\t\t\t\t\t\t\t\t\tnillable in API version 26.0 and later and available up to API version 37.0 In API version 38.0 and later, use <span class=\"keyword parmname\">LicenseId</span>.</dd>\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t</dl>\n\n\t\t\t\t\t\t\t</td>\n\n\t\t\t\t\t\t</tr>\n\n\t\t\t\t\t</tbody>\n\n\t\t\t\t</table></div>\n\n\t\t</div>\n\n\t\t<div class=\"section\">\n<h2 class=\"helpHead2\">Usage</h2>\n\n\t\t\t\n\t\t\t<p class=\"p\">Use the PermissionSet object to query existing permission sets.</p>\n\n\t\t\t<p class=\"p\">For example, to search for all permission sets that contain the “Modify All Data” permission:</p>\n\n\t\t\t<div class=\"codeSection soql\"><pre class=\"codeblock brush:plain\">SELECT Name, PermissionsModifyAllData\nFROM PermissionSet\nWHERE PermissionsModifyAllData=true</pre></div>\n\n\t\t\t<p class=\"p\">When combined with the PermissionSetAssignment object, you can create a nested query that returns all users assigned to a\n\t\t\t\tparticular permission like “Modify All Data”:</p>\n\n\t\t\t<div class=\"codeSection soql\"><pre class=\"codeblock brush:plain\">SELECT Name, (SELECT AssigneeId FROM Assignments)\nFROM PermissionSet\nWHERE PermissionsModifyAllData=true</pre></div>\n\n\t\t\t<p class=\"p\">If the permission set isn’t assigned to a user, you can also create or delete a permission set.</p>\n\n\t\t</div>\n\n\t\t<div class=\"section\">\n<h2 class=\"helpHead2\">User Licenses</h2>\n\n\t\t\t\n\t\t\t<p class=\"p\">The user license controls the permissions that are available in a permission set.</p>\n\n\t\t\t<p class=\"p\">Every permission set can be associated with a user license or permission set license. If you plan to assign a permission set to multiple users with different user and permission set\n\t\t\t\tlicenses, leave <span class=\"keyword parmname\">LicenseId</span> empty. If only users with one type of license use this permission set, set the <span class=\"keyword parmname\">LicenseId</span> to that single user or\n\t\t\t\tpermission set license. If you want a permission set associated with a permission set license, then set <span class=\"keyword parmname\">LicenseId</span> to the permission set license. To get the\n\t\t\t\t<span class=\"keyword parmname\">LicenseId</span>, run this query:</p>\n\n\t\t\t<div class=\"codeSection soql\"><pre class=\"codeblock brush:plain\">SELECT Id, Name\nFROM UserLicense</pre></div>\n\n\t\t\t<p class=\"p\">Alternatively, to query a user or profile for the <span class=\"keyword parmname\">LicenseId</span>.</p>\n\n\t\t\t<div class=\"codeSection soql\"><pre class=\"codeblock brush:plain\">SELECT Id, Profile.UserLicenseId\nFROM User</pre></div>\n\n\t\t</div>\n\n\t\t<div class=\"section\">\n<h2 class=\"helpHead2\">Child Objects</h2>\n\n\t\t\t\n\t\t\t<p class=\"p\">When using the API, think of each permission set or related set of access controls as an empty container that you fill with permission records.</p>\n\n\t\t\t<p class=\"p\">In the API, a permission set can contain user, object, and field permissions, and setup entity\n\t\t\t\taccess settings for other settings, such as Apex classes.</p>\n\n\t\t\t<ul class=\"ul bulletList\">\n\t\t\t\t<li class=\"li\">ObjectPermissions and FieldPermissions objects are available in API version 24.0\n\t\t\t\t\tand later.</li>\n\n\t\t\t\t<li class=\"li\">The SetupEntityAccess object is available in API version 25.0 and later.</li>\n\n\t\t\t\t<li class=\"li\">The PermissionSetGroupComponent object is available in API version 45 and\n\t\t\t\t\tlater.</li>\n\n\t\t\t</ul>\n\n\t\t\t<p class=\"p\">Only user permissions are managed in the PermissionSet API object; all other\n\t\t\t\tpermission types are managed in child API objects.</p>\n\n\t\t\t<p class=\"p\">In these child objects, access is stored in a record, while the absence of a record indicates no access. To return a record in a SOQL query, a minimum permission or setting is required\n\t\t\t\tfor each child object.</p>\n\n\t\t\t<p class=\"p\">Because permissions are stored in related objects, it’s important to understand what questions to ask when using SOQL. For example, let’s say you want to know which permission\n\t\t\t\tsets have “Delete” on an object. You also want to know which ones include permissions that allow approval of a return merchandise authorization (where the approval\n\t\t\t\tcheckbox is controlled with field permissions). Asking the right questions when using SOQL with permission sets ensures that you get the information you need, such as whether to\n\t\t\t\tmigrate permissions or assign a permission set to a user.</p>\n\n\t\t\t<p class=\"p\">For example, the following returns all permission sets where the “Read” permission is enabled for the Merchandise__c object.</p>\n\n\t\t\t<div class=\"codeSection soql\"><pre class=\"codeblock brush:plain\">SELECT SobjectType, ParentId, PermissionsRead\nFROM ObjectPermissions\nWHERE PermissionsRead = True AND SobjectType = 'Merchandise__c'</pre></div>\n\n\t\t\t<p class=\"p\">You can query for all permission sets that have “Read” on an object. However, you can’t query for permission sets that have no access on an object, because no\n\t\t\t\trecords exist for that object. For example, the following returns no records because the object must have at least “Read” to return any records.</p>\n\n\t\t\t<div class=\"codeSection soql\"><pre class=\"codeblock brush:plain\">SELECT SobjectType, ParentId, PermissionsRead\nFROM ObjectPermissions\nWHERE PermissionsRead = False AND SobjectType = 'Merchandise__c'</pre></div>\n\n\t\t\t<p class=\"p\">If you have at least the “Read” permission on an object, you can create a conditional query on other permissions in the same object. For example, the following returns any\n\t\t\t\trecords where the object has at least the “Read” permission but not the “Edit” permission.</p>\n\n\t\t\t<div class=\"codeSection soql\"><pre class=\"codeblock brush:plain\">SELECT ParentId, PermissionsRead, PermissionsEdit\nFROM ObjectPermissions\nWHERE PermissionsEdit = False AND SobjectType = 'Merchandise__c'</pre></div>\n\n\t\t\t<p class=\"p\">To set an object or field permission to no access, delete the record that contains the permission. For example, to disable all object permissions in the Merchandise__c object for a\n\t\t\t\tparticular permission set, first query to retrieve the ID of the object permission record.</p>\n\n\t\t\t<div class=\"codeSection soql\"><pre class=\"codeblock brush:plain\">SELECT Id\nFROM ObjectPermissions\nWHERE SobjectType = 'Merchandise__c'</pre></div>\n\n\t\t\t<p class=\"p\">Then delete the IDs returned from the query.</p>\n\n\t\t\t<div class=\"box message info\"><div class=\"inner\"><div class=\"bd\"><div class=\"media\">\n<img class=\"img mtm\" src=\"/docs/resources/img/en-us/264.0?doc_id=images%2Ficon_note.png&folder=object_reference\" alt=\"Note\"><div class=\"mediaBd\">\n<h4 class=\"mbs\">Note</h4>\n<p>If you try to update the object or field permissions by setting all permissions to false, the permission record is automatically deleted. Any subsequent queries for the record ID\n\t\t\t\twon’t return results and you must add a new permission record to grant access.</p>\n</div>\n</div></div></div></div>\n\n\t\t</div>\n\n\t\t<div class=\"section\">\n<h2 class=\"helpHead2\">View a Permission Set with Nested Queries</h2>\n\n\t\t\t\n\t\t\t<p class=\"p\">You can build on the PermissionSet object using child relationships that show all of the permissions in a single permission set. For\n\t\t\t\texample, the following returns all permission sets and displays the “Transfer Leads” permission, as well as any “Read” permissions on any objects and\n\t\t\t\tfields.</p>\n\n\t\t\t<div class=\"codeSection soql\"><pre class=\"codeblock brush:plain\">SELECT Label, PermissionsTransferAnyLead,\n(SELECT SobjectType, PermissionsRead FROM ObjectPerms),\n(SELECT SobjectType, Field, PermissionsRead FROM FieldPerms)\nFROM PermissionSet</pre></div>\n\n\t\t</div>\n\n\t\t<div class=\"section\">\n<h2 class=\"helpHead2\">Associated Profiles</h2>\n\n\t\t\t\n\t\t\t<p class=\"p\">In API version 25.0 and later, every profile is associated with a permission set that stores the profile’s user, object, and field permissions, as well as setup entity access\n\t\t\t\tsettings. You can query permission sets that are owned by profiles but not modify them. </p>\n\n\t\t\t<p class=\"p\">The following example returns all permission sets, including those owned by a profile.</p>\n\n\t\t\t<div class=\"codeSection soql\"><pre class=\"codeblock brush:plain\">SELECT Id, Label, ProfileId, Profile.Name\nFROM PermissionSet</pre></div>\n\n\t\t\t<div class=\"p\">The following returns all permission sets except those permissions owned by\n\t\t\t\tprofiles.<div class=\"codeSection soql\"><pre class=\"codeblock brush:plain\">SELECT Id, Label, ProfileId, Profile.Name, IsOwnedByProfile\nFROM PermissionSet\nWHERE IsOwnedByProfile = FALSE\n</pre></div>\nBecause\n\t\t\t\tpermission sets have child objects in the API, you can query their values on\n\t\t\t\tpermission sets owned by a profile. For example, the following returns all enabled\n\t\t\t\tobject permission records for profiles\n\t\t\t\tonly.<div class=\"codeSection soql\"><pre class=\"codeblock brush:plain\">SELECT Id,ParentId, PermissionsRead, SobjectType, Parent.ProfileId\nFROM ObjectPermissions\nWHERE Parent.IsOwnedByProfile = TRUE</pre></div>\nOnce\n\t\t\t\tyou have the IDs for permission sets that are owned and not owned by profiles, use\n\t\t\t\tthe <a class=\"xref\" href=\"atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_permissionsetassignment.htm\" title=\"Represents a user’s assignment to a permission set or permission set group. This object is available in API version 22.0 and later.\">PermissionSetAssignment</a> object to see if users can access objects or fields via their profile\n\t\t\t\tpermissions or their permission sets. For example, the following SOQL query returns\n\t\t\t\tall users who have the “Read” permission on the Merchandise__c object.\n\t\t\t\tIt also specifies whether the permission is granted through a profile or permission\n\t\t\t\tset.<div class=\"codeSection soql\"><pre class=\"codeblock brush:plain\">SELECT Assignee.Name, PermissionSet.Id, PermissionSet.isOwnedByProfile\nFROM PermissionSetAssignment\nWHERE PermissionSetId\nIN (SELECT ParentId\nFROM ObjectPermissions\nWHERE SObjectType = 'Merchandise__c' AND PermissionsRead = true)\n</pre></div>\n</div>\n\n\t\t\t<div class=\"box message info\"><div class=\"inner\"><div class=\"bd\"><div class=\"media\">\n<img class=\"img mtm\" src=\"/docs/resources/img/en-us/264.0?doc_id=images%2Ficon_note.png&folder=object_reference\" alt=\"Note\"><div class=\"mediaBd\">\n<h4 class=\"mbs\">Note</h4>\n<p>For permission sets that are owned by profiles, don’t use Name and Label values that are returned in a query. Name and Label values from queries can change.</p>\n</div>\n</div></div></div></div>\n\n\t\t</div>\n\n\t</div><div id=\"sfdc:seealso\" class=\"related-links\">\n<div class=\"relinfo\">\n<h4>See Also</h4>\n<ul class=\"unstyled\">\n<li><div><a class=\"link\" href=\"atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_objectpermissions.htm\" title=\"Represents the enabled object permissions for the parent PermissionSet. This object is available in API version 24.0 and later.\">ObjectPermissions</a></div></li>\n<li><div><a class=\"link\" href=\"atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_fieldpermissions.htm\" title=\"Represents the enabled field permissions for the parent PermissionSet. This object is available in API version 24.0 and later.\">FieldPermissions</a></div></li>\n<li><div><a class=\"link\" href=\"atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_setupentityaccess.htm\" title=\"Represents the enabled setup entity access settings (such as for Apex classes) for the parent PermissionSet. This object is available in API version 25.0 and later.\">SetupEntityAccess</a></div></li>\n<li><div><a class=\"link\" href=\"atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_permissionsetassignment.htm\" title=\"Represents a user’s assignment to a permission set or permission set group. This object is available in API version 22.0 and later.\">PermissionSetAssignment</a></div></li>\n<li><div><a class=\"link\" href=\"atlas.en-us.object_reference.meta/object_reference/sforce_api_objects_profile.htm\" title=\"Represents a profile, which defines a set of permissions to perform different operations. Operations can include creating a custom profile or querying, adding, updating, or deleting information.\">Profile</a></div></li>\n</ul>\n</div>\n</div>"}