Multi-Value Eintrag löschen bzw. archivieren
-
Guten Tag
Ich versuche seit einiger Zeit über die REST-Schnittstelle einen Eintrag aus einer Custom Category zu löschen. Beim erstellen funktioniert alles wie gewollt.
Nur bei der Entfernung eines bestimmten Eintrages bekomme ich diese Fehlermeldung:
i-doit system error: Unable to rank single value category entry. mit dem Code -32099.
Diesen Fehler bekomme ich bei cmdb.category.archive sowie bei cmdb.category.delete.
Bei der Category handelt es sich jedoch definitiv um ein Multi-Value.
Wenn ich cmdb.category.purge verwende, kriege ich eine positive success Rückmeldung. Im Webinterface ist der Eintrag dann jedoch immernoch vorhanden.
Mit Categories des Systems bspw. Contact Assignment funktioniert das einwandfrei. Liegt es vielleicht daran das es eine Custom Category ist?Hier der Body der Anfrage:
"{ "version": "2.0", "method": "cmdb.category.archive", "params": { "category": "C__CATG__CUSTOM_FIELDS_APITEST", "cateID": "2", "object": 6505, "apikey": "ApiKey", "language": "en" }, "id": 1 }"
Für die Identifikation funktionieren weder cateID noch entry.
Vielen Dank im Voraus
-
Hallo @nicolas
ich fürchte hier fehlt ein entsprechender Check im Kontext der benutzerdefinierten Kategorien. Ich werde mir das mal ansehen
Viele Grüße
Leo -
Hallo @Nicolas
ich habe mir das mal angesehen und konnte ad-hoc keinen Fehler finden. Mir ist aber aufgefallen das du für die Methode
cmdb.category.archive
den Parameterentry
stattcateID
verwenden musst. Gleiches gilt fürcmdb.category.delete
undcmdb.category.purge
.Probier es mal damit
Viele Grüße
Leo -
@lfischer
Hi, erstmal vielen Dank für die schnelle Antwort.
Das habe ich bereits probiert. Hier erneut der Body mit dem Versuch mit entry:"{ "version": "2.0", "method": "cmdb.category.archive", "params": { "category": "C__CATG__CUSTOM_FIELDS_APITEST", "entry": "1","object": 6505, "apikey": "ApiKey", "language": "en" }, "id": 1 }"
Auch hier mit derselben Fehlermeldung.
Wie gesagt, in einem anderen Skript, das Contact Assignments behandelt, was keine custom category ist, funktioniert die Anfrage mit genau diesem Body wunderbar.P.S.: die Anführungszeichen um die entryid machen keinen Unterschied.
Grüsse
Nicolas -
Hi @nicolas
das ist merkwürdig. Ich fürchte in dem Fall kann ich das Problem nicht nachstellen. Sobald ich
entry
nutze läuft es korrekt durch.Welche i-doit und API Add-on Version sind bei dir installiert? Gibt es ggf. noch andere benutzerdefinierte Kategorien mit ähnlicher Konstante?
Du könntest noch probieren die benutzerdefinierte Kategorie (ohne Änderung) zu überspeichern und anschließend den Cache zu leeren.Viele Grüße
Leo -
@lfischer
Aktuell befinden wir uns auf der Version 1.15.
Was meinst du mit überspeichern?
Das mit dem Cache muss ich wohl nächste Woche ausprobieren. Ich bin nicht für die Backups verantwortlich und will das erst noch abklären. Nicht das da noch etwas verloren geht
Ich melde mich wieder, wenn wir die nötigen Vorkehrungen getroffen haben.Grüsse
Nicolas -
Hey @nicolas
mit "überspeichern" meine ich: du öffnest die Konfiguration und speicherst diese, ohne etwas zu verändern. In manchen Fällen kann sowas helfen, wenn beim initialen Speichern irgendetwas nicht funktioniert hat.
Generell könntest du auch probieren auf die aktuellsten Versionen von i-doit (1.16.2) und API (1.12.1) zu aktualisieren
Viele Grüße
Leo -
Hi @lfischer
Das leeren des Caches hat nichts genützt.
Nachdem wir auf die API Version 1.12.1 umgestiegen sind, läuft jedoch allesVielen Dank für die Unterstützung und einen schönen Tag.
Grüsse
Nicolas -
@Nicolas said in Multi-Value Eintrag löschen bzw. archivieren:
Hi @LFischer
I have same problem when i want importing application from cmk add 1.8.3 and api 1.14.1. i installed all hotfixs.
i-doit responded with an error: i-doit system error: The specified version could not be assigned to this application
Stack trace:
#0 phar:///usr/local/bin/idoitcmk/vendor/idoit/apiclient/src/API.php(532): Idoit\APIClient\API->evaluateResponse()
#1 phar:///usr/local/bin/idoitcmk/src/API/Idoit.php(413): Idoit\APIClient\API->batchRequest()
#2 phar:///usr/local/bin/idoitcmk/src/Service/ImportApps.php(336): idoit\idoitcmk\API\Idoit->commit()
#3 phar:///usr/local/bin/idoitcmk/src/Service/ImportApps.php(123): idoit\idoitcmk\Service\ImportApps->processSoftwareAssignment()
#4 phar:///usr/local/bin/idoitcmk/src/Service/Import/ApplicationCategory.php(32): idoit\idoitcmk\Service\ImportApps->processApplications()
#5 phar:///usr/local/bin/idoitcmk/src/Service/ImportObjects.php(365): idoit\idoitcmk\Service\Import\ApplicationCategory->process()
#6 phar:///usr/local/bin/idoitcmk/src/Service/ImportObjects.php(278): idoit\idoitcmk\Service\ImportObjects->import()
#7 phar:///usr/local/bin/idoitcmk/src/Command/Pull.php(398): idoit\idoitcmk\Service\ImportObjects->update()
#8 phar:///usr/local/bin/idoitcmk/src/Command/Pull.php(373): idoit\idoitcmk\Command\Pull->importFromCue()
#9 phar:///usr/local/bin/idoitcmk/src/Command/Pull.php(123): idoit\idoitcmk\Command\Pull->import()
#10 phar:///usr/local/bin/idoitcmk/vendor/bheisig/cli/src/App.php(906): idoit\idoitcmk\Command\Pull->execute()
#11 phar:///usr/local/bin/idoitcmk/vendor/bheisig/cli/src/App.php(389): bheisig\cli\App->executeCommand()
#12 phar:///usr/local/bin/idoitcmk/vendor/bheisig/cli/src/App.php(318): bheisig\cli\App->satisfyUserChoice()
#13 phar:///usr/local/bin/idoitcmk/bin/idoitcmk.php(149): bheisig\cli\App->run()
#14 /usr/local/bin/idoitcmk(2): include('...')
#15 {main}Api log>
[2023-10-16 10:01:41 169852] DEBUG: Prepare to run request...
[2023-10-16 10:01:41 189719] ERROR: An exception occured while processing request: -32099 i-doit system error: The specified version could not be assigned to this application
[2023-10-16 10:01:41 189783] DEBUG: -------------------------------------------------------------
"version": "2.0",
"method": "cmdb.category.save",
"params": {
"object": 14870,
"category": "C__CATG__APPLICATION",
"data": {
"application": 14148,
"assigned_version": "2.28.0"
},
"apikey": "=********",
"language": "en"
},
"id": 2689 -
Hello @bsorkhpour
this is a known problem It happenes, because the API validation works on a "per property" basis instead of checking the given category data as one unit.
Because of this it will check the given version without knowing the reference application. The code will not be able to find the given version and result in an error.
I'm afraid the only workaround for this is to disable the API validation.