Eintrag in einer Multi-Value-Kategorie per API
-
Hallo,
ich versuche einen neuen Eintrag in eine Multi-Value-Kategorie per API zu erstellen. Bei einer normalen Kategorie funktioniert das bei mir folgendermaßen:
curl -s -H "Content-Type:application/json" -H "X-RPC-Auth-Session:$session_id" https://$idoitServer/idoit/src/jsonrpc.php \ --data-ascii '{"version": "2.0","params": {"language": "de", "apikey": "'$apikey'", "category": "C__CATG__CUSTOM_FIELDS_OPENVAS_C", "objID": "'$id'", "data": { "f_text_c_1490699768263":"'$group_timeslot'", "f_text_c_1490699791291":"'$next_time_hour'", "f_popup_c_1491468241437":"'$next_time_date'", "f_text_c_1490699801403":"'$target_id'","f_text_c_1490699806285":"'$schedule_id'","f_text_c_1491804201857":"0"}}, "id": 1, "method": "cmdb.category.update" }' --noproxy $idoitServer -k > json_update_response.tmp
Versuche ich das gleiche aber mit einem Multi-Value-Kategorie:
curl -s -H "Content-Type:application/json" -H "X-RPC-Auth-Session:$session_id" https://$idoitServer/idoit/src/jsonrpc.php \ --data-ascii '{"version": "2.0","params": {"language": "de", "apikey": "'$apikey'", "category": "C__CATG__CUSTOM_FIELDS_OPENVAS_E", "objID": "'$id'", "data": { "f_text_c_1494509969047":"'$cvss'","f_text_c_1490001717552":"'$high'","f_text_c_1490001708884":"'$medium'","f_text_c_1490001700208":"'$low'","f_text_c_1490001591982":"'$log'","f_text_c_1491460705077":"'$scanstart'","f_text_c_1491460727523":"'$scanend'","f_text_c_1491460732290":"'$Dauer'","f_link_c_1493713325789":"'$link'"}}, "id": 1, "method": "cmdb.category.update" }' --noproxy $idoitServer -k > json_update_response_arti.tmp
bekomme ich
{"jsonrpc":"2.0","error":{"code":-32099,"message":"i-doit system error","data":{"error":"General error: Syntax error, malformed JSON"}},"id":0}
zurück. Ich habe es auch schon mit "cmdb.category.create" probiert. In der "i-doit JSON-RPC API" habe ich leider nichts bezüglich Multi-Value-Feldern gefunden.
Hat hier jemand einen Tipp?
Mfg,
Niklas
-
Ich bin zunächst einmal geneigt, der Fehlermeldung Glauben zu schenken, und anzunehmen, dass einer der Parameter Ihnen die JSON-Syntax kaputt macht.
Weiterhin gilt: Bei Single-Value Kategorien können Sie create und update austauschbar verwenden. Bei Multi-Value Feldern müssen Sie im Dictionary einen Key "category_id" mit angeben, damit spezifiziert ist, welchen Eintrag Sie ändern wollen.
-
Hallo,
leider kann ich keinen grundsätzlichen Fehler feststellen. Allerdings beschränkt sich mein Wissen im Grunde auf die funktionierenden Befehlen die ich durch ausprobieren der API und das Auswerten der cmdb.read-responses erarbeitet habe bzw. durch hilfreiche Tipps hier aus dem Forum. Aus der Doku unter https://kb.i-doit.com/pages/viewpage.action?pageId=7831613 werde ich nur bedingt schlau.
Bei meinem letzten Problem (https://forum.i-doit.org/index.php/topic,4986.msg15377.html#msg15377) war mir die Antwort des json-requests leider keine große Hilfe, da ich immer "success" zurück bekam obwohl ich bewusst falsche Werte übergeben habe. Daher ist mein Vertrauen in die Fehlermeldung etwas getrübt ;).
Bezüglich der "category_id". Es existiert noch kein Eintrag in der Multi-Value-Kategorie, also müsste ich in Verbindung mit cmd.create auch keine category_id angeben, oder?. Ich probiere nachher mal cmdb.update in Verbindung mit einer category_id, indem ich vorher manuell einen Eintrag über die WebGUI erstelle und schaue was passiert.
Gruß,
nklein
-
Hallo,
leider kann ich keinen grundsätzlichen Fehler feststellen. Allerdings beschränkt sich mein Wissen im Grunde auf die funktionierenden Befehlen die ich durch ausprobieren der API und das Auswerten der cmdb.read-responses erarbeitet habe bzw. durch hilfreiche Tipps hier aus dem Forum. Aus der Doku unter https://kb.i-doit.com/pages/viewpage.action?pageId=7831613 werde ich nur bedingt schlau.
Ich würde curl mit –trace verwenden, um genau zu sehen, was über die Leitung geht. Weiterhin gibt es am Ende der von Ihnen angegebenen Doku einen Link auf ein PDF, welches wohl die beste verfügbare Dokumentation darstellt, trotz einiger Cut-and-Paste Fehler.
Bei meinem letzten Problem (https://forum.i-doit.org/index.php/topic,4986.msg15377.html#msg15377) war mir die Antwort des json-requests leider keine große Hilfe, da ich immer "success" zurück bekam obwohl ich bewusst falsche Werte übergeben habe. Daher ist mein Vertrauen in die Fehlermeldung etwas getrübt ;).
Bezüglich der "category_id". Es existiert noch kein Eintrag in der Multi-Value-Kategorie, also müsste ich in Verbindung mit cmd.create auch keine category_id angeben, oder?. Ich probiere nachher mal cmdb.update in Verbindung mit einer category_id, indem ich vorher manuell einen Eintrag über die WebGUI erstelle und schaue was passiert.
Genau.