API Kontakt Zuweisung
-
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!
-
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 -
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 } }
Leider funktioniert bei mir nur "cmdb.category.create" statt "cmdb.category.save"
-
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!
-
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.
-
@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...
Habe den Code 1:1 von dir übernommen und nur die IDs von meinen Objekten eingetragen. Fehlt hier evtl. noch etwas?
Lieben Dank.
-
@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
-
@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