• Interner Fehler bei nutzung Calls to the API

    2
    0 Votes
    2 Posts
    216 Views
    Selcuk KekecS
    Hallo @juergen-mnich, ich vermute, dass du diese Library verwendest, welche aktuell von einem unserer Kollegen gepflegt wird: https://github.com/OKT90/Idoit.API.Client Was ich dir lediglich auf Grundlage des StackTraces sagen kann ist folgendes: Der Error-Code "-32604" weist auf ein Problem bei der Authentifizierung hin. Könntest du bitte sicherstellen, dass die Credentials und auch der API-Key korrekt sind. Eventuell kannst du hierzu den PHP-Client von Benjamin Heisig verwenden oder aber einen simplen HTTP-Client. Der PHP-Client ist hier zu finden. Viele Grüße Selcuk
  • JSON-RPC: Patchpanel Ports anlegen

    2
    0 Votes
    2 Posts
    289 Views
    Michael HuhnM
    Hallo @uhe, nachdem ein Anschluss erstellt wurde, muss bei der Erstellung des 2. Anschlusses der Key: connector_sibling verwendet werden. Das würde so aussehen. Ich erstelle eine Objekt mit Kategoriedaten: { "id": 1, "version": "2.0", "method": "cmdb.object.create", "params": { "type": "C__OBJTYPE__PATCH_PANEL", "title": "PatchPanel-1", "categories": { "C__CATG__IP": [ { "ipv4_address": "11.11.0.123", "hostname": "PatchPanel-1", "domain": "", "primary": 1, "ipv4_assignment": 2, "active": 1 } ], "C__CATG__CONNECTOR": [ { "title": "Port-01/01 Eingang", "type": 1, "connection_type": 1, "interface": 1, "description": "My descr" } ] }, "apikey": "h3md6u3y", "language": "en" } } Das sieht in der GUI so aus: [image: 1645615561674-a1e4ebbf-8dc3-47dc-a080-5402fa9291a9-image.png] So nun erstelle ich den Ausgang, dazu verwende ich die Entry ID vom Eingang als ID für den sibling: { "version": "2.0", "method": "cmdb.category.save", "params": { "object": 1122702179, "apikey": "h3md6u3y", "language": "en", "category": "C__CATG__CONNECTOR", "data": { "title": "Port-01/01 Ausgang", "type": 2, "connection_type": 1, "interface": 1, "connector_sibling": 87734, "description": "My descr" } }, "id": 2 } Nun wieder in der GUI: [image: 1645615707569-7cfea40e-d782-4687-93b9-5e9b6b6c9f01-image.png] Das sollte dir helfen.
  • Tabelle mit Javascript/PrototypeJS parsen.

    2
    0 Votes
    2 Posts
    223 Views
    LFischerL
    Hallo @ulf-wagner der Code sieht eigentlich schon sehr gut aus, es fehlt nur eine Kleinigkeit: function setLocation(row) { const deviceId = row.down('td[data-property="GeraeteID"] span').textContent.trim(); const locationId = row.down('td[data-property="APStandortID"] span').textContent.trim(); } Die erste Änderung: ich verwende down anstatt von select - das ist eine Methode die der bequemlichkeit dient select liefert immer ein Array an gefundenen Elementen, down selectiert nur das "zuerst gefundene". Ich habe außerdem den Selector angepasst, sodass dieser nun direkt das <span> Element in der Zelle selektiert. Die zweite Änderung: wir verwenden textContent um den "text" Inhalt des <span> Elements auszulesen - alternativ könnte man auch sowas nutzen wie innerHTML - das würde allerdings den HTML Link auslesen, probier das mal mit "APStandortID". Das Ergebnis wäre: <a href="/i-doit/?objID=1295">1295</a> ... Aber du möchtest ja vermutlich nur 1295. Letzte Änderung: Aus technischen Gründen beinhalten die Spalten immer ein Leerzeichen - durch trim() wird dieses entfernt. Um potentiellen JS Fehlern zu entgehen kann der Code auch so geschrieben werden: function setLocation(row) { const deviceCell = row.down('td[data-property="GeraeteID"] span'); const locationCell = row.down('td[data-property="APStandortID"] span'); let deviceId = null; let locationId = null; if (deviceCell) { deviceId = deviceCell.textContent.trim(); } if (locationCell) { locationId = locationCell.textContent.trim(); } } Das sichert nur ab, das die Selektoren tatsächlich etwas gefunden haben Ich hoffe das hilft weiter! Viele Grüße Leo
  • cmdb.category.save fehlende Datenübernahme bei [string]

    10
    0 Votes
    10 Posts
    431 Views
    Michael HuhnM
    Hallo @lewando hier mal die Antwort darauf wie man Geräte unter Laufwerke zuweist: Das in der Benutzeroberfläche angezeigte Feld mit der Bezeichnung "Auf Gerät" verwendet verschiedene Eigenschaften zusammen. category_const ist die Eigenschaft, die bestimmt, um welchen Typ es sich handelt. Sie kann sein C__CATG__STORAGE, C__CATG__RAID oder C__CATG__LDEV_CLIENT sein. Und für jede Konstante gibt es eine eigene Eigenschaft, die mit dem ausgewählten Object (device, raid bzw. ldev) verknüpft ist. Der korrekte API-Aufruf wäre demnach: { "version": "2.0", "method": "cmdb.category.save", "params": { "object": 13698, "category": "C__CATG__DRIVE", "data": { "mount_point": "/var", "title": "/dev/mapper/fs02-data", "system_drive": "0", "filesystem": "XFS", "capacity": 60, "unit": "GB", "device": 111, "category_const": "C__CATG__STORAGE", "description": "Auto created by API" }, "apikey": "beer", "language": "en" }, "id": 1 } Wobei die 111 die ID des zuvor angelegten Gerätes in der Kategorie Lokaler Massenspeicher darstellt. Du solltest nun auch die Bezeichnung des Gerätes als device verwenden können. Möchtest du ein RAID verknüpfen musst du dies in der Kategorie Lokaler Massenspeicher -> RAID-Verbund erstellen und dann via ID oder Bezeichnung verknüpfen: "raid": 13, "category_const": "C__CATG__RAID" oder "raid": "Raid-1", "category_const": "C__CATG__RAID" Für ein LDEV Client erstellst du einen Eintrag in der Kategorie Speichernetze -> Logische Geräte (Client) und dann via ID oder Bezeichnung verknüpfen: "ldev": 6, "category_const": "C__CATG__LDEV_CLIENT" oder "ldev": "LDEV-Client", "category_const": "C__CATG__LDEV_CLIENT"
  • CPU-Infos bei OCS-Import erzeugt massig doppelte Einträge

    3
    0 Votes
    3 Posts
    281 Views
    A
    Thema ist erledigt, wurde durch ein Ticket vom i-doit Team gelöst durch einen Hotfix. Wird vermutlich im nächsten Update mit drin sein
  • HTML-Editor und Bilder

    4
    0 Votes
    4 Posts
    448 Views
    T
    Vielen Dank für die Rückmeldungen. Das Dokumente AddOn kenne ich schon. Aber auch dort kann ich nicht einfach Bilder über die Zwischenablage oder Drag&Drop einfügen, hat dort ja genau den vergleichbaren(?) HTML Editor. Der Tipp von LFischer mit dem Weg über die "Bilder" Kategorie wäre ein Workaround. Dann kann man zumindest die hierüber verfügbare Bilder-URL für andere Bereiche der Dokumentation mit den verwendeten HTML-Editor nutzen. Wäre halt Prima wenn dies über eine, wie auch immer geartete und angesprochene Zwischenschicht transparent ablaufen würden. Schöne Feiertage an alle und kommt gut und gesund ins neue Jahr 2022.
  • Lo4j Zero Day Lücke i-doit?

    4
    3 Votes
    4 Posts
    392 Views
    O
    @michael-overkamp Danke!
  • API Aufruf für Button "Update object from JDisc"

    2
    0 Votes
    2 Posts
    224 Views
    Michael HuhnM
    Hallo @matthias-0 ja das sollte möglich sein und zwar kann man über die Console.php den Command import-jdiscdiscovery verwenden. Diesen Aufruf kann man über die API via { "jsonrpc": "2.0", "method": "console.import.jdiscdiscovery", "params": { "options": { "user": "admin", "password": "admin", "deviceHostname": "mein-mainlappi.fritz.box" }, "apikey": "h3md6u3y", "language": "en" }, "id": 1 } Ausführen.
  • 0 Votes
    2 Posts
    233 Views
    LFischerL
    Hey @willpmu wir haben mit i-doit 1.17 die Konfiguration der benutzerdefinierten Kategorien umgebaut, das dürfte allerdings keine Auswirkungen auf die Kategorien innerhalb der Objekte haben Was genau meinst du mit: Das Problem ist, dass ich neuerdings keine Möglichkeit mehr habe, den Report zuzuweisen. Es kommt nur mehr ein Beschreibungsfeld, aber keine Auswahl mehr. Bezieht sich das auf die Konfiguration oder die Kategorie im Objekt? Hast du ggf. Screenshots von "vorher" (ggf. via Snapshot / Sicherung)? Viele Grüße Leo
  • Client mit Kontakt mit API zu verbinden

    2
    0 Votes
    2 Posts
    391 Views
    Michael HuhnM
    Hallo @shquinn4com, kurz und schmerzlos cmdb.category.save = Key -> object cmdb.category.create = Key -> objID
  • Simkarte zu Handy via API zuweisen

    6
    0 Votes
    6 Posts
    339 Views
    LFischerL
    Hallo @skussmann ich bin nun endlich dazu gekommen das Problem nachzustellen - es stellt sich raus das die Daten in deinem Request nicht korrekt übergeben werden. Normalerweise meldet i-doit sich in einem solchen Fall mit einer Fehlermeldung... Hast du ggf. die "API Validierung" abgeschaltet? Die Fehlermeldung würde so aussehen: Internal error: There was an validation error [isys_obj__id: (object_browser) Property has to be an array.; isys_catg_cards_list__id: (object_browser) Property has to be an array.] Da hier mit "Objekt Referenzen" gearbeitet wird (im Frontend geschieht dies über Objekt-Browser) muss die ID folgendermaßen übergeben werden: { "version": "2.0", "method": "cmdb.category.save", "params": { "object": 21001, "data": { "isys_obj__id": { "id": 21001 }, "isys_catg_cards_list__id": { "id": 21003 } }, "category": "C__CATG__ASSIGNED_SIM_CARDS", "apikey": "<apikey>" }, "id": 1 } Ich schätze bei C__CATS__LAYER2_NET_ASSIGNED_PORTS dürfte es ein ähnliches Problem sein Ich hoffe ich konnte dir weiterhelfen! Viele Grüße Leo edit Ich schätze hier müssen wir unsere API Doku noch mal anpassen, da diese falsche Informationen liefert
  • REST API - Parent oder Children finden

    3
    0 Votes
    3 Posts
    387 Views
    LFischerL
    Hallo zusammen, @MartinV hatte es richtig erkannt - um die zugewiesenen Standorte eines Objekts zu erhalten braucht man die Methode cmdb.location_tree.read hier kann man mittels Parameter id entscheiden wessen "children" man sehen möchte. Also z.B. { "version": "2.0", "method": "cmdb.location_tree.read", "params": { "id": 1234, "apikey": "<key>" }, "id": 1 } Im Ergebnis erhält man dann ein Array mit allen direkt zugewiesenen Objekten, die Daten schauen dabei so aus (pro Objekt): [ { "id": 302, "title": "0.01 Office", "sysid": "ROOM_00000302", "type": 26, "type_title": "Room", "status": 2, "cmdb_status": 6, "cmdb_status_title": "in operation" }, { "id": 1073, "title": "pool.ntp.org", "sysid": "CLOUD_0001073", "type": 39, "type_title": "Host", "status": 2, "cmdb_status": 6, "cmdb_status_title": "in operation" }, ... ] Viele Grüße Leo
  • API Suche nach Attributen aus Benutzerdefinierter Kategorie

    2
    0 Votes
    2 Posts
    177 Views
    LFischerL
    Hallo @baloo66 mir ist eine solch detaillierte Suche im Code nicht bekannt - ich fürchte das hat hauptsächlich damit zu tun das solche Suchen bei Referenz-Werten sehr schwierig zu implementieren sind. Es wäre vermutlich besser ein eigenes kleines Add-on mit einem API Endpunkt zu schreiben, sofern das nötige Know-How verfügbar ist. Wir haben einige Artikel zu dem Thema in unserer Knowledge Base hinterlegt. Wäre das eine Option? Viele Grüße Leo
  • system.devmode

    4
    0 Votes
    4 Posts
    204 Views
    LFischerL
    Hallo @mig , die Kurzfassung ist ganz einfach "Nein" Es dient tatsächlich nur dazu Debug-Ausgaben zu machen die für die Entwickler nötig sind. Der "normale" User soll diese nicht dargestellt bekommen. Das wird auch nur sehr selten genutzt, falls wir z.B. Patches oder Hotfixes ausliefern. VG Leo
  • Auslesen der Report ID's über die JSON API

    6
    0 Votes
    6 Posts
    322 Views
    O
    Hallo @lfischer, nach mehreren Tagen Fehleranalyse konnte ich den Fehler jetzt endlich finden. Der Error-Log an mir an der Stelle den entscheidenden Hinweis gegeben. Das Problem war eine fehlerhaft eingebundene Klasse. Diese habe ich nun entfernt und schon werden auch die Reports wieder angezeigt. Vielen Dank für die Unterstützung. Beste Grüße Oliver
  • Erstellen eines variablen Reports + zugehöriger Kategorie

    3
    0 Votes
    3 Posts
    278 Views
    LFischerL
    Hey @cwrm, entschuldige die späte Antwort - aber gut zu sehen das du eine Lösung gefunden hast. Der Add-on Packager übernimmt genau diese Aufgabe indem die Konstante (isys_report__const) zum identifizieren genutzt wird. Über diese Konstante kann die ID gefunden und referenziert werden Das geschieht ebenfalls mittels der install Logik, da die update_data.xml keinerlei Logik ausführen kann - lediglich SQL Queries. Vielleicht konnte ich hiermit noch ein wenig weiterhelfen? Viele Grüße Leo
  • Check_MK 2 Addon kompatible mit CMK 2.0

    5
    0 Votes
    5 Posts
    357 Views
    Y
    Ok das war dann ein Missverständnis auf meiner Seite. Die alte API funktioniert erstmal weiter auch im 2.0 nur einige Funktionen sind nur in der neuen API verfügbar. Danke
  • Batch / Bulk Request

    2
    0 Votes
    2 Posts
    316 Views
    F
    Das ergibt sich direkt aus der JSON-RPC Spezifikation. Im Abschnitt darunter auf der Seite sind auch Beispiele.
  • cmdb.impact.read

    3
    0 Votes
    3 Posts
    250 Views
    K
    @philipp-hörselmann Danke für die Antwort. Ich habe jetzt einen Workaround für meine Anwendung. Allerdings wäre der Verlust der impact Funktion ein ziemliches Desaster. Evtl gibt es ja eine andere Methode, die ich nioch nicht gesehen habe? Ich bekomme den Namen eines Objektes. Über die Suchfunktion suche ich mir die ID heraus. Jetzt muss ich alle Objekte, im idealfall nur bestimmte Typen, die mit diesem Objekt verknüpft sind, zurück bekommen, damit ich die Verbindung bearbeiten kann. Die IDs der Verknpüften Objeket habe ich nicht. Oder gibt es eine Möglichkeit, einen Objekttyp abzufragen, welcher Eintrag mit einer bestimmten ID verknüpft ist? Ich versuche mal ein Beispiel: Ein Benutzer (Kontakt) hat einen Notebook, 2 Monitore und einen Drucker verknüpft. Wenn der Benutzer sich nun an einem anderen Platz anmeldet, liefert mir ein System die SN der (neu) verknüpften Systeme. Um das in idoit nach zu ziehen, suche ich die ID des Benutzers und lasse mir über impact.read die Liste der Objeket geben. dort löse ich die Verknüpfung. Danach suche ich die neuen Objekte und verknüpfe sie mit dem Kontakt. Wenn ich natürlich eine Möglichkeit hätte, alle Monitore nach einer Verknüpfung mit KontaktID zu durchsuchen und bei dem Ergebnis die Verknüpfung zu lösen, wäre das schon klasse.
  • API SLA (Write)

    2
    0 Votes
    2 Posts
    163 Views
    LFischerL
    Hallo @cojo es ist derzeit tatsächlich nicht möglich diese Daten mittels API zu schreiben. Die API unterstützt die speziellen Feldtypen nicht Viele Grüße Leo