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

    I-doit API via Python

    Scheduled Pinned Locked Moved Betrieb
    2 Posts 2 Posters 1.2k 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.
    • M Offline
      maximilian.k
      last edited by

      Guten Tag,

      aktuell versuche ich die API via Python anzusprechen. Hintergrund war ursprünglich, dass einer großen Anzahl an Benutzern eine zusätzliche E-Mailadresse hinzugefügt werden sollte und diese anschließend als "primary" gesetzt wird. Python soll eingesetzt werden, weil im Team und in der bisherigen IT-Infrastruktur Python stark verbreitet ist und somit einen gewissen Standart darstellt.

      Bisheriges Ergebnis:
      Um keine Fehler zu verursachen habe ich mich erstmal an einem Code für eine Suche probiert. Die Funktion "SearchTitle(string)" sucht im Titelfeld nach einem vollen string und liefert den "Bereich" General aus i-doit zurück.

      Zielstellung:
      Gerne möchte ich nun auch den Bereich "Persons" mit den Attributen zurückbekommen und später dort auch schreiben, z. B. die E-Mailadresse. Das gelingt mir aber leider nicht, weil ich nicht weiß wie ich die "untergeordneten" Attribute ansprechen kann.

      Anbei ein Bild der Thematik. Die grün eingerahmen Informationen, Z. B. Titel, Bildurl, Creation Date etc. kann ich mit dem unten stehenden Code auslesen. Die rot eingerahmten Informationen z. B. Firstname, Lastname, e-Mail kann ich nicht auslesen.
      https://www.magentacloud.de/lnk/eiJyzZtV#file

      Anbei mein bisheriger Versuch:

      
      from urllib import request
      
      #sends an JSON request to i-doit and return its response
      def IdoitApiConnector(command):
          req = request.Request('http://usermanagement.mgmt.domain.com/src/jsonrpc.php', command.encode('utf-8'))
          req.add_header('Content-Type', 'application/json')
          response = request.urlopen(req)
          return response.read()
      
      #Searches for an string in the titlefield
      def SearchTitle(SearchString):
          command = '{"version": "2.0",' + \
                    '"method": "cmdb.objects",' + \
                    '"params": {' + \
                    '"filter": {"title": "' + SearchString + '"},' + \
                    '"apikey": "abc123",' + \
                    '"language": "en"' + \
                    '},' + \
                    '"id": 1' + \
                    '}'
          return IdoitApiConnector(command)
      
      test = SearchTitle('Liesschen Mueller')
      print(test)
      
      
      1 Reply Last reply Reply Quote 0
      • F Offline
        franknagel
        last edited by

        An die email-Adressen von Liesschen Müller kämen Sie mit folgendem RPC:

        {
            "method": "cmdb.category.read",
            "params": {
                "category": "C__CATG__MAIL_ADDRESSES",
                "objID": 4551
            },
            "version": "2.0"
        }
        
        

        Die interne Datenstruktur entspricht hier nicht exakt der Darstellung auf der Weboberfläche. Sie werden nicht umhin kommen, genauer zu schauen, wie die Daten auf die einzelnen Kategorien aufgeteilt sind. Erlaubte Kategorien für den Objekttyp Person bekommen Sie mittels

        {
            "method": "cmdb.object_type_categories",
            "params": {
                "type": "C__OBJTYPE__PERSON"
            },
            "version": "2.0"
        }
        
        

        und dann können Sie unter http://usermanagement.mgmt.domain.com//?load=api_properties in etwa schauen, welche Felder in den einzelnen Kategorien stecken.

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