Activate Site Feature through REST API

%3CLINGO-SUB%20id%3D%22lingo-sub-84046%22%20slang%3D%22en-US%22%3EActivate%20Site%20Feature%20through%20REST%20API%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-84046%22%20slang%3D%22en-US%22%3E%3CP%3EI'm%20trying%20to%20activate%20site%20level%20feature%20by%20using%20REST%20API%20in%20SharePoint%20Hosted%20App.%20I've%20given%20full%20control%20at%20Site%20Collection%20%26amp%3B%20Site%20level%20with%20App%20only%20Calls.%20But%20I'm%20getting%20%22Access%20Denied%20Error%22%20with%20403%20status.%26nbsp%3B%3C%2FP%3E%3CPRE%3Efunction%20bindButtonClick()%20%7B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20var%20featuresURI%20%3D%20hostUrl%20%2B%20%22%2F_api%2Fweb%2Ffeatures%2Fadd('a7a2793e-67cd-4dc1-9fd0-43f61581207a')%22%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24.ajax(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20url%3A%20featuresURI%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20method%3A%20'POST'%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20headers%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22Accept%22%3A%20%22application%2Fjson%3Bodata%3Dverbose%22%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22X-RequestDigest%22%3A%20%24(%22%23__REQUESTDIGEST%22).val()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20success%3A%20function%20(data)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.log(%22Feature%20Activated%22)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20error%3A%20function%20(data)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20console.log(%22error%3A%20%22%20%2B%20JSON.stringify(data))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%3C%2FPRE%3E%3CP%3EError%3A%3C%2FP%3E%3CPRE%3EFailed%20to%20load%20resource%3A%20the%20server%20responded%20with%20a%20status%20of%20403%20(Forbidden)%0Aerror%3A%20%7B%22readyState%22%3A4%2C%22responseText%22%3A%22%7B%5C%22error%5C%22%3A%7B%5C%22code%5C%22%3A%5C%22-2147024891%2C%20System.UnauthorizedAccessException%5C%22%2C%5C%22message%5C%22%3A%7B%5C%22lang%5C%22%3A%5C%22en-US%5C%22%2C%5C%22value%5C%22%3A%5C%22Access%20denied.%20You%20do%20not%20have%20permission%20to%20perform%20this%20action%20or%20access%20this%20resource.%5C%22%7D%7D%7D%22%2C%22status%22%3A403%2C%22statusText%22%3A%22Forbidden%22%7D%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-86348%22%20slang%3D%22en-US%22%3ERe%3A%20Activate%20Site%20Feature%20through%20REST%20API%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-86348%22%20slang%3D%22en-US%22%3EI've%20tried%20the%20same%2C%20but%20getting%20error%3CBR%20%2F%3E%22Cannot%20read%20property%20'add'%20of%20undefined%22%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-86316%22%20slang%3D%22en-US%22%3ERe%3A%20Activate%20Site%20Feature%20through%20REST%20API%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-86316%22%20slang%3D%22en-US%22%3E%3CP%3E%3CSPAN%3EDoes%20instead%20of%26nbsp%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%3E%24pnp.sp.crossDomainWeb(addinweb%2C%20hostweb).get().....%3C%2FPRE%3E%3CP%3E%3CSPAN%3Emaybe%20somethign%20like%20this%20work%3A%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%3E%24pnp.sp.crossDomainWeb(addinweb%2C%20hostweb).features........%3C%2FPRE%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-86302%22%20slang%3D%22en-US%22%3ERe%3A%20Activate%20Site%20Feature%20through%20REST%20API%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-86302%22%20slang%3D%22en-US%22%3E%3CP%3EHi%20%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F2387%22%20target%3D%22_blank%22%3E%40Pieter%20Veenstra%3C%2FA%3E%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EThanks%20for%20your%20comment..%3C%2FP%3E%3CP%3EI've%20tried%20the%20same%20within%20SHA%2C%20But%20still%20facing%20issues.s%3C%2FP%3E%3CP%3ECode%3A%3C%2FP%3E%3CPRE%3E%24pnp.sp.crossDomainWeb(addinweb%2C%20hostweb).get().then(function%20(success)%20%7B%0A%20%20%20%20%20%20%20%20success.web.features.add(%22a7a2793e-67cd-4dc1-9fd0-43f61581207a%22).then(r%20%3D%26gt%3B%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.log(r)%3B%0A%20%20%20%20%20%20%20%20%7D).catch(function%20(err)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20console.log(err)%3B%0A%20%20%20%20%20%20%20%20%7D)%3B%0A%20%20%20%20%7D).catch(function%20(err)%20%7B%0A%20%20%20%20%20%20%20%20console.log(err)%3B%0A%20%20%20%20%7D)%3B%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI'm%20getting%20error%26nbsp%3B%3C%2FP%3E%3CPRE%3ETypeError%3A%20Cannot%20read%20property%20'features'%20of%20undefined%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-84071%22%20slang%3D%22en-US%22%3ERe%3A%20Activate%20Site%20Feature%20through%20REST%20API%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-84071%22%20slang%3D%22en-US%22%3E%3CP%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F65112%22%20target%3D%22_blank%22%3E%40Arun%20C%3C%2FA%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI%20would%20look%20into%20PnP-Js-Core.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%3Eimport%20pnp%20from%20%22sp-pnp-js%22%3B%0A%0Alet%20web%20%3D%20pnp.sp.web%3B%0A%0A%2F%2F%20activate%20the%20minimum%20download%20strategy%20feature%0Aweb.features.add(%2287294c72-f260-42f3-a41b-981a2ffce37a%22).then(f%20%3D%26gt%3B%20%7B%0A%0A%20%20%20%20console.log(f)%3B%0A%7D)%3B%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FSharePoint%2FPnP-JS-Core%2Fwiki%2FWorking-With%3A-Features%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fgithub.com%2FSharePoint%2FPnP-JS-Core%2Fwiki%2FWorking-With%3A-Features%3C%2FA%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E
Highlighted
New Contributor

I'm trying to activate site level feature by using REST API in SharePoint Hosted App. I've given full control at Site Collection & Site level with App only Calls. But I'm getting "Access Denied Error" with 403 status. 

function bindButtonClick() {

            var featuresURI = hostUrl + "/_api/web/features/add('a7a2793e-67cd-4dc1-9fd0-43f61581207a')"; 
                $.ajax({
                    url: featuresURI,
                    method: 'POST',
                    headers: {
                        "Accept": "application/json;odata=verbose",
                        "X-RequestDigest": $("#__REQUESTDIGEST").val()
                    },
                    success: function (data) {
                        console.log("Feature Activated");
                    },
                    error: function (data) {
                        console.log("error: " + JSON.stringify(data));
                    }
                });
            }

Error:

Failed to load resource: the server responded with a status of 403 (Forbidden)
error: {"readyState":4,"responseText":"{\"error\":{\"code\":\"-2147024891, System.UnauthorizedAccessException\",\"message\":{\"lang\":\"en-US\",\"value\":\"Access denied. You do not have permission to perform this action or access this resource.\"}}}","status":403,"statusText":"Forbidden"}

 

4 Replies
Highlighted

Hi @Arun C

 

I would look into PnP-Js-Core.

 

import pnp from "sp-pnp-js";

let web = pnp.sp.web;

// activate the minimum download strategy feature
web.features.add("87294c72-f260-42f3-a41b-981a2ffce37a").then(f => {

    console.log(f);
});

 

 

https://github.com/SharePoint/PnP-JS-Core/wiki/Working-With:-Features

 

 

 

 

 

 

Highlighted

Hi @Pieter Veenstra,

 

Thanks for your comment..

I've tried the same within SHA, But still facing issues.s

Code:

$pnp.sp.crossDomainWeb(addinweb, hostweb).get().then(function (success) {
        success.web.features.add("a7a2793e-67cd-4dc1-9fd0-43f61581207a").then(r =>
        {
            console.log(r);
        }).catch(function (err)
        {
            console.log(err);
        });
    }).catch(function (err) {
        console.log(err);
    });

 

I'm getting error 

TypeError: Cannot read property 'features' of undefined

 

Highlighted

Does instead of 

 

$pnp.sp.crossDomainWeb(addinweb, hostweb).get().....

maybe somethign like this work:

 

$pnp.sp.crossDomainWeb(addinweb, hostweb).features........
Highlighted
I've tried the same, but getting error
"Cannot read property 'add' of undefined"