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

    API Kontakt Zuweisung

    Scheduled Pinned Locked Moved Entwicklung
    8 Posts 3 Posters 1.1k 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.
    • P Offline
      PSLearner
      last edited by

      Hallo liebe Community,

      ich befasse mich seit einer Woche mit der I-DOIT API und kann zumindest einfachste Sachen damit machen (z.B. suchen etc.).

      Leider probiere ich schon seit einem ganzen Tag, die Kontaktzuweisung bei einem Client zu ändern. Mit der langen Dokumentation komme ich diesbezüglich leider nicht zurecht...

      Habe auch schon alle mögliche Beiträge hier gelesen aber die Lösung nicht gefunden.

      Ich verwende PS für die API.

      Ist die Methode cmdb.category.create dafür korrekt?
      Evtl. auch die Category C__CATG__CONTACT?

      Wobei ich jetzt hängen geblieben bin:

      $body = @{
      version = '2.0';
      method = 'cmdb.category.create';
      params = @{
      category = 'C__CATG__CONTACT'
      apikey = 'xxx'
      language = 'en'
      object = 'ID Client'
      data = @{
      objid = 'ID eines Users'
      }
      };
      id = '1';
      }

      Ich bekomme dauernd Fehler, dass die Object ID invalid ist "ID must be positive and higher than two".

      Ich vermute aber, dass mein Aufruf allgemein komplett falsch aufgebaut ist.

      Könntet ihr mir bitte helfen?

      Vielen Dank!

      MartinVM 1 Reply Last reply Reply Quote 0
      • MartinVM Offline
        MartinV @PSLearner
        last edited by MartinV

        Meines Wissens müsste der Aufbau wie folgt sein:

        $body = @{
          version = '2.0';
          method = 'cmdb.category.create';
          params = @{
            category = 'C__CATG__CONTACT'
            apikey = 'xxx'
            language = 'en'
            objID = 'ID Client'
            data = @{
              contact_object = 'ID eines Users'
              role = 'Administrator' # oder 'User', ...
            }
          };
          id = '1';
        }
        

        Die Werte für die Rollen findet man unter Administration > CMDB Settings > Roles Administration , oder kann sie mit cmdb.dialog.read auslesen, wie hier beschrieben.

        HTH
        Martin

        1 Reply Last reply Reply Quote 0
        • H Offline
          Hoehn
          last edited by

          Für mich hat folgendes Funktioniert:

          {
              "jsonrpc": "2.0",
              "method": "cmdb.category.create",
              "params": {
                  "objID": "1337",
                  "category": "C__CATG__CONTACT",
                  "data": {
          			"contact": 42, # PersonenID
          			"role": 2, # Administration > CMDB Settings > Roles administration
          			"primary": 1 # Primärkontakt
          		},
                  "apikey":""
              },
              "id": 1
          }
          

          Das Ergebis:

          {
              "id": 1,
              "jsonrpc": "2.0",
              "result": {
                  "id": 4242,
                  "message": "Category entry successfully created. [This method is deprecated and will be removed in a feature release. Use 'cmdb.category.save' instead.]",
                  "success": true
              }
          }
          

          idoit.png

          Leider funktioniert bei mir nur "cmdb.category.create" statt "cmdb.category.save"

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

            Danke für eure Antworten,

            leider konnte ich das Ganze erst jetzt wieder testen.

            Ich hätte die Syntax von beiden Posts probiert und erhalten bei beiden den Fehler " message=Internal error: There was an validation error", die getesteten IDs stimmen jedoch.

            Was könnte hier das Problem sein bzw. wie schaffe ich es mit PowerShell über die save Methode nachdem die create Methode ja anscheinend bald nicht mehr funktioniert?

            Vielen Dank!

            MartinVM 1 Reply Last reply Reply Quote 0
            • MartinVM Offline
              MartinV @PSLearner
              last edited by MartinV

              Bei cmdb.category.save heißt der Key anders (object statt objID). Keine Ahnung, wieso...

              $body = @{
                "version" = "2.0";
                "method" = "cmdb.category.save";
                "params" = @{
                  "category" = "C__CATG__CONTACT"
                  "apikey" = "xxx"
                  "language" = "en"
                  "object" = 'ID Client'
                  "data" = @{
                    "contact_object" = 'ID eines Users'
                    "role" = "Administrator" # oder "User", ...
                  }
                };
                "id" = "1";
              }
              

              Da C__CATG__CONTACT eine Multi-Value Kategorie ist, ist es möglich, dass unter params auch noch eine Entry-ID (mit dem Key "entry") übergeben werden kann/muss. Weiß aber nicht, ob 0- oder 1-basiert.

              P 1 Reply Last reply Reply Quote 0
              • P Offline
                PSLearner @MartinV
                last edited by

                @MartinV
                Danke für die Hilfe, ich bekomme hier leider wieder den Fehler, dass die ObjectID ein Integer sein muss der ein existierendes Objekt referenziert. Das Objekt gibt es jedoch mit Sicherheit und die ID ebenfalls...
                b8652dcf-5fac-49dd-b3cf-ad7e705ccd9d-image.png

                Habe den Code 1:1 von dir übernommen und nur die IDs von meinen Objekten eingetragen. Fehlt hier evtl. noch etwas?

                Lieben Dank.

                MartinVM 1 Reply Last reply Reply Quote 0
                • MartinVM Offline
                  MartinV @PSLearner
                  last edited by

                  @PSLearner
                  Nur zur Sicherheit: Die beiden ObjectIDs trägst Du als Zahlen ein, oder? D.h. ohne die Anführungsstriche.

                  Verifizieren, dass eine ObjektID existiert, kann man mit

                  $Body = @{
                      "jsonrpc" = "2.0"
                      "method" = "cmdb.object.read"
                      "params" = @{
                          "apikey" = $apiKey
                          "id" = 1
                      }
                      "id" = $RequestId
                  }
                  

                  Beispiel für das Root Location (ID 1), die immer existiert. Das ergibt auf unserem System (nach ConvertFrom-Json wegen der Lesbarkeit)

                  id                : 1
                  title             : Root location
                  sysid             : SYSID_1132672018
                  objecttype        : 30
                  type_title        : Generic Location
                  type_icon         : images/icons/silk/house.png
                  status            : 2
                  cmdb_status       : 6
                  cmdb_status_title : in operation
                  created           : 2020-11-23 15:07:27
                  updated           : 2020-11-23 15:07:27
                  image             : https://.../images/objecttypes/empty.png
                  
                  P 1 Reply Last reply Reply Quote 0
                  • P Offline
                    PSLearner @MartinV
                    last edited by

                    @MartinV
                    Das war es tatsächlich, das war mir gar nicht bewusst. Ich dachte ich muss hier alles als String übergeben...

                    Danke für deine Hilfe, jetzt kann ich die Zuweisungen korrekt anlegen

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