2

I'm trying to get user permissions using the REST API. At the moment, I can call an endpoint like this:

_api/web/lists/getbytitle('Documents')/getusereffectivepermissions(@u)?@u=%27i%3A0%23.f%7Cmembership%7Csome.user%40domain.com%27

And I get a response like this:

{
"d": {
     "GetUserEffectivePermissions": {
         "__metadata":{
            "type":"SP.BasePermissions"
         },
         "High":"176",
         "Low":"138612833"
       }
   }
}

Which are, in binary:

High: 10110000
Low:  1000010000110001000001100001

Full permissions come out like this (high has one less bit):

High: 1111111111111111111111111111111
Low: 11111111111111111111111111111111

However, I can't seem to find which permissions each bit represents. The best I've found is SPBasePermissions in Hex and Binary, which gives a list of 34 permissions and their binary representation. The list on technet gives 37 permissions.

Full permissions gives me 63 bits of information. The more restricted permissions return at least 40 bits of information, since leading 0s are dropped.

What permissions do the bits map to?

1

I believe the information required is on consultantpoint's wordpress site. I have made one correction and added the binary column for easier reference.

| Permission Name              | Hex (base 16)      | Binary                                                          | Decimal             |
|------------------------------|--------------------|-----------------------------------------------------------------|---------------------|
| EmptyMask                    | 0x0000000000000000 | 0                                                               | 0                   |
| List and Document permission |                    |                                                                 |                     |
| ViewListItems                | 0x0000000000000001 | 1                                                               | 1                   |
| AddListItems                 | 0x0000000000000002 | 10                                                              | 2                   |
| EditListItems                | 0x0000000000000004 | 100                                                             | 4                   |
| DeleteListItems              | 0x0000000000000008 | 1000                                                            | 8                   |
| ApproveItems                 | 0x0000000000000010 | 10000                                                           | 16                  |
| OpenItems                    | 0x0000000000000020 | 100000                                                          | 32                  |
| ViewVersions                 | 0x0000000000000040 | 1000000                                                         | 64                  |
| DeleteVersions               | 0x0000000000000080 | 10000000                                                        | 128                 |
| CancelCheckout               | 0x0000000000000100 | 100000000                                                       | 256                 |
| ManagePersonalViews          | 0x0000000000000200 | 1000000000                                                      | 512                 |
| ManageLists                  | 0x0000000000000800 | 100000000000                                                    | 2048                |
| ViewFormPages                | 0x0000000000001000 | 1000000000000                                                   | 4096                |
| Web level permission         |                    |                                                                 |                     |
| Open                         | 0x0000000000010000 | 10000000000000000                                               | 65536               |
| ViewPages                    | 0x0000000000020000 | 100000000000000000                                              | 131072              |
| AddAndCustomizePages         | 0x0000000000040000 | 1000000000000000000                                             | 262144              |
| ApplyThemeAndBorder          | 0x0000000000080000 | 10000000000000000000                                            | 524288              |
| ApplyStyleSheets             | 0x0000000000100000 | 100000000000000000000                                           | 1048576             |
| ViewUsageData                | 0x0000000000200000 | 1000000000000000000000                                          | 2097152             |
| CreateSSCSite                | 0x0000000000400000 | 10000000000000000000000                                         | 4194304             |
| ManageSubwebs                | 0x0000000000800000 | 100000000000000000000000                                        | 8388608             |
| CreateGroups                 | 0x0000000001000000 | 1000000000000000000000000                                       | 16777216            |
| ManagePermissions            | 0x0000000002000000 | 10000000000000000000000000                                      | 33554432            |
| BrowseDirectories            | 0x0000000004000000 | 100000000000000000000000000                                     | 67108864            |
| BrowseUserInfo               | 0x0000000008000000 | 1000000000000000000000000000                                    | 134217728           |
| AddDelPrivateWebParts        | 0x0000000010000000 | 10000000000000000000000000000                                   | 268435456           |
| UpdatePersonalWebParts       | 0x0000000020000000 | 100000000000000000000000000000                                  | 536870912           |
| ManageWeb                    | 0x0000000040000000 | 1000000000000000000000000000000                                 | 1073741824    High  |
| UseRemoteAPIs                | 0x0000002000000000 | 100000 00000000000000000000000000000000                         | 137438953472,  16   |
| ManageAlerts                 | 0x0000004000000000 | 1000000 00000000000000000000000000000000                        | 274877906944,  32   |
| CreateAlerts                 | 0x0000008000000000 | 10000000 00000000000000000000000000000000                       | 549755813888,  64   |
| EditMyUserInfo               | 0x0000010000000000 | 100000000 00000000000000000000000000000000                      | 1099511627776, 128  |
| Special Permissions          |                    |                                                                 |                     |
| EnumeratePermissions         | 0x4000000000000000 | 1000000000000000000000000000000 00000000000000000000000000000000| 4611686018427387904 |
| FullMask                     | 0x7FFFFFFFFFFFFFFF | 1111111111111111111111111111111 11111111111111111111111111111111| 9223372036854775807 |
| UseClientIntegration         | 0x1000000000       | 10000 00000000000000000000000000000000                          | 68719476736         |

And a useful javascript object with bitshifting, for those who don't enjoy counting 0s.

Flags: {
    Low : {
        // Lists and Documents
        EmptyMask           :   0,
        ViewListItems       :   1<<0,
        AddListItems        :   1<<1,
        EditListItems       :   1<<2,
        DeleteListItems     :   1<<3,
        ApproveItems        :   1<<4,
        OpenItems           :   1<<5,
        ViewVersions        :   1<<6,
        DeleteVersions      :   1<<7,
        OverrideListBehaviors:  1<<8,
        ManagePersonalViews :   1<<9,
        ManageLists         :   1<<11,
        ViewApplicationPages:   1<<12,

        // Web Level    
        Open                :   1<<16,
        ViewPages           :   1<<17,
        AddAndCustomizePages:   1<<18,
        ApplyThemAndBorder  :   1<<19,
        ApplyStyleSheets    :   1<<20,
        ViewAnalyticsData   :   1<<21,
        UseSSCSiteCreation  :   1<<22,
        CreateSubsite       :   1<<23,
        CreateGroups        :   1<<24,
        ManagePermissions   :   1<<25,
        BrowseDirectories   :   1<<26,
        BrowseUserInfo      :   1<<27,
        AddDelPrivateWebParts : 1<<28,
        UpdatePersonalWebParts: 1<<29,
        ManageWeb           :   1<<30
    },
    High: {

        // High Bits
        UseClientIntegration:   1<<4,
        UseRemoteInterfaces :   1<<5,
        ManageAlerts        :   1<<6,
        CreateAlerts        :   1<<7,
        EditPersonalUserInformation: 1<<8,

        // Special Permissions
        EnumeratePermissions:   1<<30,
        //FullMask          :   2147483647 // Invisible in WebUI, not useful since it's always true when &'ed
    }
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.