Forum Discussion

mrgou's avatar
mrgou
Frequent Visitor
5 years ago
Solved

Expression.Error: We haven't been given permission to perform actions against this resource

Based on the helpful answer I received here, I created this piece of code as a test to authenticate and pull data from a REST API, and pasted it in the Advanced Editor of a blank query.

The API requires username and password authentication through a POST request (not GET), with the user name and password passed as query parameters (not in the headers), and then returns a sessionID. I can run this HTTP authentication query successfully in Postman:

 

 

let
    rooturl = "https://rooturl.com/",
    //credentials
    username = "myusername",
    password = "mypassword",
    relativeURL =
        "api/v20.3/auth",
    //connect to server
    GetJson =
        WebAction.Request(
            "POST",
            rooturl,
            [
                Headers = [
                    #"Content-Type" = "application/json"
                ],
                Query = [
                    #"username" = username,
                    #"password" = password
                ],
                RelativePath = relativeURL
            ]
        ),
    //'session Id' for advanced operation
    sessionId = Json.Document(GetJson)[sessionId],
    Source =
        Web.Contents(
            (omitting for brevity)
        )
in
    Source

 

Unfortunately, the WebAction.Request step triggers the following error: Expression.Error: We haven't been given permission to perform actions against this resource.

 

I simply don't understand what this means, and even if the HTTP request was sent. I did find a similar question here, but I don't really understand the proposed solution and how it would apply to my case.

 

Thanks in advance for your help!

2 Replies

  • mrgou's avatar
    mrgou
    Frequent Visitor

    Yes, thank you! Passing an empty body in a Web.Content function (Content = Text.ToBinary("")) did the trick. Oddly, that seems to imply that Web.Actions doesn't really work, though...