Community
    • Categories
    • Recent
    • Popular
    • Users
    • Search
    • Register
    • Login

    Löschen/Purgen von 'single value categories' über JSON-RPC-API

    Scheduled Pinned Locked Moved Entwicklung
    8 Posts 5 Posters 1.6k Views 1 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • T Offline
      thaefner
      last edited by

      Hallo zusammen.

      Ich suche derzeit eine Möglichkeit in einem Objekt  'single value categories' wie z.B. 'C__CATG__OPERATING_SYSTEM' über die JSON-API zu löschen.
      Auf herkömmliche Weise mit cmdb.category.delete erhalte ich folgenden Fehler:

      {
          "error": {
              "code": -32603, 
              "data": {
                  "error": "Your category is not multi-valued. It is not possible to delete a single value category."
              }, 
              "message": "Internal error"
          }, 
          "id": 1, 
          "jsonrpc": "2.0"
      }
      

      Im Webinterface wird allerdings eine purge-Funktion angeboten, also muss die Funktionalität ja in irgendeiner Form schon gegeben sein. Gibt es dafür in der API vielleicht einen anderen Weg?

      Viele Grüße
      Tobias

      thaefner is using i-doit v1.7.5 PRO

      1 Reply Last reply Reply Quote 0
      • J Offline
        jkondek
        last edited by

        Hallo Tobias,

        mit dem Loeschen von single-value-Kategorie-Eintraegen habe ich mich noch nie beschaeftigt. Aber ich denke, es sollte zumindest moeglich sein, diese mit "" (leer) zu ueberschreiben?

        Gruss,
        jkondek

        1 Reply Last reply Reply Quote 0
        • T Offline
          thaefner
          last edited by

          Hallo jkondek.

          Mit dem folgenden Aufruf überschreibe ich den Eintrag praktisch leer:

          {
          	"version": "2.0",
          	"method": "cmdb.category.update",
          	"params": {
          		"apikey": "123456789",
          		"objID": 42,
          		"category":  "C__CATG__OPERATING_SYSTEM",
          		"data": {
          			"category_id": "1337",
          			"application": "0",
          			"assigned_variant": "0",
          			"assigned_version": "0",
          			"description": ""
          			}
          		},
          	"id": 1
          }
          

          Überschreiben ist allerdings nicht gleich Löschen. Der Purge Button im Webinterface löscht den Eintrag tatsächlich. Lese ich ihn nämlich danach aus erhalte ich ein leeres "result".
          Wenn ich den eintrag nach diesem update allerdings auslese, hat er immernoch die genullten Attribute + seine ID:

          {
              "id": 1, 
              "jsonrpc": "2.0", 
              "result": [
                  {
                      "application": [], 
                      "application_priority": {
                          "const": "C__CATG__APPLICATION_PRIORITY__PRIMARY", 
                          "id": "1", 
                          "title": "Primary", 
                          "title_lang": "LC__CATG__APPLICATION_PRIORITY__PRIMARY"
                      }, 
                      "application_type": {
                          "const": "C__CATG__APPLICATION_TYPE__OPERATING_SYSTEM", 
                          "id": "2", 
                          "title": "Operating system", 
                          "title_lang": "LC__CATG__APPLICATION_TYPE__OPERATING_SYSTEM"
                      }, 
                      "assigned_database_schema": false, 
                      "assigned_it_service": false, 
                      "assigned_license": false, 
                      "assigned_variant": null, 
                      "assigned_version": null, 
                      "bequest_nagios_services": {
                          "title": "No", 
                          "value": "0"
                      }, 
                      "description": "", 
                      "id": "1337", 
                      "objID": "42"
                  }
              ]
          }
          

          Was für mich optimal wäre, ist nunmal ein leeres result. 😄

          Viele Grüße
          Tobias

          thaefner is using i-doit v1.7.5 PRO

          1 Reply Last reply Reply Quote 0
          • J Offline
            jkondek
            last edited by

            Hallo Tobias,

            hab mir jetzt doch mal angeschaut, wie das Loeschen ueber die API funktioniert. Scheinbar bisher leider nur fuer Multi-Value Kategorien, darauf laesst zumindest die Fehlermeldung schliessen:

            "error":"Your category is not multi-valued. It is not possible to delete a single value category."

            Eine andere Idee, wie Du zumindest die Eintraege los wirst, ist das Loeschen auf DB Ebene. Dafuer sollte man sich aber ziemlich gut dort auskennen und auch abhaengige Tabellen beruecksichtigen.

            Vielleicht sollte man vorher beim Support fragen, ob es ueber die API moeglich ist, zu loeschen. Und wenn es nur ein Bug ist 😉

            Gruss,
            jkondek

            1 Reply Last reply Reply Quote 0
            • G Offline
              gunzip
              last edited by

              Hallo,

              Ich bin auf dasselbe Problem gestoßen, und Google führte mich hierher
              fast wie in dem XKCD 979.

              Bei dem "Location" gibt es kein "Purge" in dem GUI. Es ist also unmöglich
              eine Zuweisung wieder loszuwerden. Falls der OP dafür eine Lösung gefunden
              hat –- bitte posten!

              MfG,

              Alexei

              1 Reply Last reply Reply Quote 0
              • P Offline
                phospi
                last edited by

                Hallo,

                ich hole den Thread mal aus der Versenkung. Ich habe dasselbe Bedürfnis wie thaefner.

                Ich versuche über die JSON-RPC API die Kategorie  'C__CATG__OPERATING_SYSTEM' zu löschen und bekomme weiterhin die Meldung

                Your category is not multi-valued. It is not possible to delete a single value category.
                

                Ich benutze Version 1.9.0 PRO.

                1 Reply Last reply Reply Quote 0
                • F Offline
                  franknagel
                  last edited by

                  Die API bietet die undokumentierte (?) Funktion cmdb.category.quickpurge an, die auch bei Single-Value Kategorien funktioniert. Startpunkt für weiter Versuche ist dann der Quellcode in src/classes/modules/api/model/cmdb/isys_api_model_cmdb_category.class.php .

                  1 Reply Last reply Reply Quote 0
                  • P Offline
                    phospi
                    last edited by

                    cmdb.category.quickpurge funktioniert wie gewünscht. Dankeschön.

                    In der aktuellen Doku, die in der Knowledge Base hinterlegt ist, ist der Methodenparameter nicht dokumentiert. Da gibt es nur cmdb.object.quickpurge

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post