Forum Discussion

DBirdmanAR's avatar
DBirdmanAR
Regular Visitor
6 years ago

Connecting PowerBI to REDCap via API with token

Hi All,

 

I am trying to connect PowerBI to REDCap (see https://projectredcap.org/) which is a PHP/MySQL application that has an API which uses HTTP POST to allow users to pull data with a valid token.

 

I have been having a lot trouble formatting the PowerBI call.  I know I have the proper permissions because I can use R to query my API.  This is a valid R call to the API

 

 

 

 

library(RCurl)
 result <- postForm(
     uri='MY APIs URL',
     token='MY VALID TOKEN',
     content='project',
     format='json',
     returnFormat='json'
 )
 print(result)

 

 

 

 

and I get a good response.  However I cannot figure out how to translate this to PowerBI.  

 

What is interesting is that when I run this code I get an error which states I get an error "Expression.Error: Access to the resource is forbidden." 

 

 

 

let
     url = "MY APIs URL",
     body = "{ 
     ""token"":""MY VALID TOKEN HERE"", 
     ""content"":""project"", 
     ""format"":""json"", 
     ""returnFormat"";""json""
     }",

     Source = Json.Document(Web.Contents(
          url,
          [Headers = [#"Content-Type"="application/json"],
          Content=Text.ToBinary(body)]))
in
     Source

 

 

 

 

 When I click on "Edit Settings" I get this popup window which I accept as "OK" but I still am getting and error  "Web.Contents failed to get contents from 'My APIs URL' (501): Not Implemented".    I know I have permissions because I can get R to run the code and I get a response.  I think I am not formatting the M code correctly but I am not sure how.

 

10 Replies

  • DBirdmanAR's avatar
    DBirdmanAR
    Regular Visitor

    Hi All, I found a public REDCap API (see https://cran.r-project.org/web/packages/REDCapR/vignettes/TroubleshootingApiCalls.html which midway down says 

     

    If it helps to start with a different REDCap server, you can use this dummy project containing fake data hosted by the OUHSC BBMC. The url is https://bbmc.ouhsc.edu/redcap/api/. There are three key-value pairs: (1) the ‘token’ is 9A81268476645C4E5F03428B8AC3AA7B, (2) the ‘content’ is record, and (3) the ‘format’ should be CSV. When checking your own server, the token value should change, but the content and format should not. It should return five records in a CSV format. The ‘status’ should be 200 OK

     

    I installed Postman in Chrome and tried the dummy API at bbmc and both it, and my API work within Postman.  It is clearly an error that I am having in trying to set up PowerBI.

     

    I tried to set up a very simple connection like this but I still get an error Details: "Web.Contents failed to get contents from 'https://bbmc.ouhsc.edu/redcap/api/' (501): Not Implemented"

     

    • DBirdmanAR's avatar
      DBirdmanAR
      Regular Visitor

      It was two issues:

      1.   I need to change to x-www-form-urlencoded
      2.  There were serious formating errors with both the Headers and the Content
      let
          actualUrl = "https://bbmc.ouhsc.edu/redcap/api/",
          record  =[token="9A81268476645C4E5F03428B8AC3AA7B",
          content="record",
          format="csv"
          ],
          body = Text.ToBinary(Uri.BuildQueryString(record)),
          options = [Headers =[#"Content-type"="application/x-www-form-urlencoded"], Content=body],
          result = Web.Contents(actualUrl, options)
          
      in
          result

       

    • PradeepTh's avatar
      PradeepTh
      Frequent Visitor

      Hi, 

      I am facing similar issue. How this was solved? Pleas share steps.

       

      Regards,

      Pradeep

  • Anonymous's avatar
    Anonymous
    Not applicable

    Can anyone outline the steps took to get this to work?

     

    I currently use the GitHub connector that allows for local refresh but does not allow for auto refresh online. I'm not sure which connector you guys were using for the code listed below.