Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hi,
I'm trying to create Nprinting filters in Qliksense script, but each time I received error 400
"One of the following errors has occurred:The body of the request is malformed.The app with the specified 'appId' does not exist.One or more connections does not belong to the app with the specified appId.The cache for one or more connection IDs is not in status "Generated".The connection does not contain a field with the specified name."
Based on the documentation I added to the filter's body appid, enabled and name, but issue still appers
Could someone provide syntax of filter body?
Thansk,
Vitalii
Hi,
Are you doing it from Qlik load script? Did you trace variable which gets passed as request BODY? I assume you are not passing APP ID or using wrong parameter for "Enabled".
As exercise I suggest you first hardcode your request by hardcoding NPrinting app id in table below. : This will create empty filter in the app.
I tested it in my environment so I am sure it works.
Let vURL_Filters = 'https://$(vNPrintingServer):4993/api/v1/filters';
Let vConnection_POST = 'Your Res POST Connection';
FiltersTable:
Load
RowNo()-1 as FilterRowNo,
'API_Test' as FilterName,
'1637d2ed-a479-4afa-8900-c471f43e2eae' as FilterAppId,
True() as FilterEnabled
Autogenerate
(1)
;
FOR Each vFilterRowId in FieldValueList('FilterRowNo');
// create Filter
LIB CONNECT TO '$(vConnection_POST)';
Let vFilterName = CHR(34) & Peek('FilterName' ,$(vFilterRowId),'FiltersTable') & CHR(34);
Let vFilterAppId = CHR(34) & Peek('FilterAppId' ,$(vFilterRowId),'FiltersTable') & CHR(34);
Let vFilterEnabled = CHR(34) & Peek('FilterEnabled' ,$(vFilterRowId),'FiltersTable') & CHR(34);
// create json BODY
set vFilterBody = '{"Name":$(vFilterName),"AppId":$(vFilterAppId),"Enabled":$(vFilterEnabled)}';
Trace $(vFilterBody);
let vFilterBody = replace(vFilterBody,'"', chr(34)&chr(34));
// trigger request
RestNPPOSTandPUTTestTable:
SQL SELECT
"__KEY_data"
FROM
JSON (wrap off) "data" PK "__KEY_data"
WITH
CONNECTION( URL "$(vURL_Filters)", BODY "$(vFilterBody)",
HTTPHEADER "Origin" "$(vQlikSenseServer)",
HTTPHEADER "Content-Type" "application/json",
HTTPHEADER "cookie" "$(vCookie)")
;
DROP TABLE RestNPPOSTandPUTTestTable;
exit script;
NEXT
one note - I am not sure about September 2017 version. It is very old and I did not test on it.
Hi,
In November 2019 we solved the following issue:
Changes to Filters APIs
Changes to filters APIs:
- The field properties "selectExcluded" and "overrideValues" are optional with default value "false"
- The filter fields list is optional with an empty fields list as default value
- Set missing/required attribute on properties that were only marked as optional
So I think you are not setting a parameter documented as optional in the old September 2017 but instead it is mandatory.
Best Regards,
Ruggero
Hi Ruggero,
We have Nprinting version September 2019, I selected 2017 by mistake
Thanks,
Vitalii
Hi Lech,
Thank you for help, I've tried you code, but still have the same issue.
Below you can see my filter body
{"Name":"API_Test_Filter","AppId":"c5300cf6-392a-4389-842b-25cc41c7b0d","Enabled":"True"}
Thanks,
Vitali
Hi,
No problem, the bug was solved in November 2019 so next version compared to yours. So it could be that you are experiencing it so that you must specify parameters that was declared as optional.
Best Regards,
Ruggero
Ruggero,
Could you please provide example of filter body which you use in the app?
Because I've tried different variants and receive the same result each time.
Thanks,
Vitalii
Hi,
This body worked in my April 2020 TP installation
{
"appId": "ab53ef11-3cdc-45af-9403-b788eba2b004",
"enabled": true,
"name": "Created via API",
"description": "Example of a filter created via API Postman",
"fields": [
{
"connectionId": "07d36409-1a43-40ae-a682-e17f8929e9c6",
"name": "Country",
"overrideValues": false,
"selectExcluded": false,
"values": [
{
"value": "USA",
"type": "text"
}
]
}
],
"variables": []
}
I sent it via Postman
and it created the filter.
Best Regards,
Ruggero
Thank you!
Looks like I should think how to create JSON hierarchy in the Qlik script.
Thanks,
Vitalii