Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
I've created a dahsboard, of which the source is Lead Forensics' API (they identify businesses veiwing our wensite).
In desktop I connect without any issues like this:
let
Source = Json.Document(Web.Contents("https://interact.leadforensics.com/WebApi_v2/Visit/GetAllVisits?datefrom=01-01-2020 00:00:00&dateto=31-12-2030 23:59:59&pagesize=999999&pageno=1", [Headers=[#"Authorization-Token"="XXXXXXXXXXXXXX", #"ClientID"="XXXXX"]])),
visits1 = Source[SiteVisitList],
#"Converted to Table" = Table.FromList(visits1, Splitter.SplitByNothing(), null, null, ExtraValues.Error)
in
#"Converted to Table"
The problem starts when I try to set up a data refresh. In Data Source credentials I get the "Your data source can't be refreshed because the credentials are invalid. Please update your credentials and try again." notification as presented below:
When I get to changing the credentials I wanted to use the standard "Annonymous" and "none" settings like I always do with APIs, but I get this error:
"Failed to update data source credentials: Web.Contents failed to get contents from 'https://interact.leadforensics.com/WebApi_v2/Business/GetAllBusinesses?datefrom=01-01-2010%2000:00:0...' (400): The Lead Forensics API Key was expected to be provided in the header for this call."
What am I doing wrong?
Solved! Go to Solution.
I have finally managed to solve the problem witrh a little bit of help from @blopez11 which he posted here
let
vBaseUrl = "https://interact.leadforensics.com",
vPath = "WebApi_v2/Visit/GetAllVisits?datefrom=01-01-2020 00:00:00&dateto=31-12-2030 23:59:59&pagesize=999999&pageno=1",
vHeaders = [#"Authorization-Token"="THIS IS WHERE I PUT THE AUTH TOKEN", #"ClientID"="THIS IS WHERE I PUT THE ID"],
Source = Web.Contents ( vBaseUrl, [RelativePath=vPath, Headers=vHeaders] ),
Json = Json.Document ( Source ), SiteVisitList = Json[SiteVisitList],
#"Converted to Table" = Table.FromList(SiteVisitList, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
in
#"Converted to Table"
Awesome thanks, you're amazing man!
I have finally managed to solve the problem witrh a little bit of help from @blopez11 which he posted here
let
vBaseUrl = "https://interact.leadforensics.com",
vPath = "WebApi_v2/Visit/GetAllVisits?datefrom=01-01-2020 00:00:00&dateto=31-12-2030 23:59:59&pagesize=999999&pageno=1",
vHeaders = [#"Authorization-Token"="THIS IS WHERE I PUT THE AUTH TOKEN", #"ClientID"="THIS IS WHERE I PUT THE ID"],
Source = Web.Contents ( vBaseUrl, [RelativePath=vPath, Headers=vHeaders] ),
Json = Json.Document ( Source ), SiteVisitList = Json[SiteVisitList],
#"Converted to Table" = Table.FromList(SiteVisitList, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
in
#"Converted to Table"
Awesome thanks, you're amazing man!
Your ApiKeyName seems to be "x-api-key".
I took a guess, cause that's the API Key Name I've seen somewhere else. Sadly it didn't work. Neither did "'Authorization-Token" as a name.
Thanks. Do you mean I should add the api key (which is the same as authorization token) like this:
" Source = Json.Document(Web.Contents("https://interact.leadforensics.com/WebApi_v2/Visit/GetAllVisits?datefrom=01-01-2020 00:00:00&dateto=31-12-2030 23:59:59&pagesize=999999&pageno=1", [Headers=[#"Authorization-Token"="XXXXXXXXXXXX", #"ClientID"="XXXXX", #"x-api-key"="XXXXXXXXXXXX"]])),"
?
Or add the "api key's name" (which I don't know) ?
Web.Contents has an option specifically for the API Key. use it.
can you elaborate? Am I supposed to make changes in M in desktop ?