I-doit API via Python



  • 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)
    
    


  • 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.


Log in to reply
 


Datenschutz / Privacy Policy