Forum Discussion
Can connect to API from PBI Desktop but cannot complete CURL example for data binary element - Help!
- 3 years ago
I thought I was to use Example 2That's my mistake, apologies. Indeed I wanted you to look primarily at example 1 which shows both RelativePath and Query. But your sample curl script indicates that all filter parameters are in the POST body, so the Query part is not relevant (the RelativePath part is).
You can convert the curl -d value into a Power Query Content value like this
CURL:
{"filter":{"query":"-status:closed -category:job","period":{"by":"day","fromValue":7}}}Power Query:
Text.ToBinary("{""filter"":{""query"":""-status:closed -category:job"",""period"":{""by"":""day"",""fromValue"":7}}}")
I also found that I got an Invalid identifier error with "filter" highlighted. Hmm, maybe this will work?
let
base_url = "https://hostname:443",
api_key = "<Your API Key>",
url = base_url & "/incidents/search",
headers = [
#"Content-Type" = "application/json",
#"Accept" = "application/json",
#"Authorization" = api_key
],
filterPayload = [
"filter" = [
"query" = "-status:closed -category:job",
"period" = [
"by" = "day",
"fromValue" = 7
]
]
],
body = Json.FromValue(filterPayload),
// Make the API request
response = Web.Contents(
url,
[
Headers = headers,
Content = body,
ManualStatusHandling = {404} // Handle 404 errors if needed
]
),
// Handle response
jsonResponse = Json.Document(response)
in
jsonResponse
lbendlinI keep getting an invalid identifier on "filter" = [ in all the examples. I'm going to try something like this next but welcome your feedback or anyone else in the community.
let
base_url = "https://hostname:443",
api_key = "<Your API Key>",
url = base_url & "/incidents/search",
headers = [
#"Content-Type" = "application/json",
#"Accept" = "application/json",
#"Authorization" = api_key
],
filterJson = [
"filter" = [
"query" = "-status:closed -category:job",
"period" = [
"by" = "day",
"fromValue" = 7
]
]
],
bodyText = Text.FromBinary(Json.FromValue(filterJson)),
// Create a custom request
request = Http.Request(url, [
Content = Text.ToBinary(bodyText), // Convert payload to binary
Headers = headers,
ManualStatusHandling = {404} // Handle 404 errors if needed
]),
// Make the API request using Web.Contents
response = Web.Contents(request),
// Handle response
jsonResponse = Json.Document(response)
in
jsonResponse
- lbendlin3 years agoSuper User
Please read the documentation again and use the RelativePath feature.
Do you also have documentation that is not Python library specific?
- eyelikedata23 years agoHelper I
My misunderstanding lbendlin I thought I was to use Example 2 but you suggest to use Example 1 that would return that output type or is there another reason for the use of relative path?
Also, I'm sorry but all their documentation is python or cURL specific. The cURL example was one taken from here, but there are more examples found at https://docs-cortex.paloaltonetworks.com/r/Cortex-XSOAR-API/Search-incidents-by-filter
- eyelikedata23 years agoHelper I
I did find the following while playing with the developer tab in firefox. I noticed it used --data-raw instead of --data-binary and more fields as referenced in the API docs I provided. I modified my M query as follows but still needs improvement.
let base_url = "https://hostname:443", api_key = "<Your API Key>", url = base_url & "/incidents/search", headers = [ #"Content-Type" = "application/json", #"Accept" = "application/json", #"Authorization" = api_key ], filterJson = [ "userFilter" = false, "": [ "page" = 0, "size" = 50, "query" = "investigation:id:* -status:Closed -category:job", "sort" = {[{"field"="modified", "asc"=false}]}, "period" = {"by"="day", "fromValue"=7} } ], bodyText = Text.FromBinary(Json.FromValue(filterJson)), // Create a custom request request = Http.Request(url, [ Content = Text.ToBinary(bodyText), // Convert payload to binary Headers = headers, ManualStatusHandling = {404} // Handle 404 errors if needed ]), // Make the API request using Web.Contents response = Web.Contents(request), // Handle response jsonResponse = Json.Document(response) in jsonResponse