Simkarte zu Handy via API zuweisen
-
Bitte um Hilfe. Wenn ich versuche eine existierende Simkarte zu einem exisierenden Handy via API zuzuweisen bekomme ich zwar die Meldung „Category entry successfully saved“, sehe jedoch keine Veränderung in der GUI.
Laut I-DOIT Log:
Request: { "params": { "object": 105943, "data": { "isys_obj__id": 105943, "isys_catg_cards_list__id": 105489 }, "category": "C__CATG__ASSIGNED_SIM_CARDS", "apikey": "...", "language": "en" }, "method": "cmdb.category.save", "id": 162929028596, "version": "2.0" } Response: { "success": true, "message": "Category entry successfully saved", "entry": 1 }
Auch beim Auslesen via API existiert danach keine Verbindung, wenn ich die Verbindung händisch via GUI setze komme ich sehr wohl die Verbindung auch via API retour.
105943 ist die ID des Cellular Phone, 105489 ist die ID der SIM card. Beides wurde schon via API erstellt, und passt soweit auch. Lediglich die Verbindung der beiden Objekte will aus irgendeinem Grund über die API nicht klappen.
Wäre für jeden Hinweis dankbar, was ich hier exakt falsch mache. Besten Dank für euren Input vorab.
Danke,
Stefan -
Hallo @skussmann
ich müsste erst probieren dieses Verhalten lokal zu reproduzieren, könnte mir aber vorstellen das es ggf. aufgrund der Attribut-Namen zu Problemen kommen könnte. Diese haben nämlich das Format einer Tabellenspalten - vielleicht gerät i-doit hier durcheinander.
Hattest du probiert die Daten aus der anderen Richtung zu speichern? Also in der Kategorie
C__CATG__SIM_CARD
über das Attributassigned_mobile
. Das könnte ein Workaround sein, bis wir das Problem angegangen sindViele Grüße
Leo -
Hallo @lfischer ,
danke für die rasche Rückmeldung. Die Keys wurden anhand der Definition in Categories and attributes verwendet.
-
Hey @skussmann
die verwendeten Keys sind korrekt - die konnte ich auch so im Code finden, sie haben lediglich eine "ungewöhnliche" Form Ich bin leider noch nicht dazu gekommen den Fehler zu reproduzieren...
Hattest du es mit dem Workaround probiert den ich vorgeschlagen habe?
Viele Grüße
Leo -
Hallo @lfischer ,
Danke für die Rückmeldung. Habe den Workarround soeben ausprobiert, auf diesem Wege funktioniert es, ja. Vielen Dank für den Input.
Kannst Du mir bitte dennoch sagen wie die Syntax korrekt lauten müsste für C__CATG__ASSIGNED_SIM_CARDS?
Habe nämlich das selbe Problem mit C__CATS__LAYER2_NET_ASSIGNED_PORTS, und ich vermute ich mache hier etwas falsch. Dort sind nämlich auch ähnliche Keynamen in Verwendung, ebenso write type integer[].Besten Dank vorab,
LG Stefan -
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 seinIch hoffe ich konnte dir weiterhelfen!
Viele Grüße
Leoedit
Ich schätze hier müssen wir unsere API Doku noch mal anpassen, da diese falsche Informationen liefert