Autor Thema: CI via API abrufen und erstellen mit angepasster Klasse  (Gelesen 968 mal)

marcohald

  • Newbie
  • Beiträge: 15
Hi,
leider habe ich nirgends eine API Dokumentation gesehen, wo erklärt wird, wie man Eigenschaften von einem CI mit angepasster Klasse abgragen kann.
Wenn ich Beispielweise {{ base_url }}/cmdb/configitems/6146 aufrufe bekomme ich das zurück:{
  "ConfigItem": {
    "ChangeBy": 1,
    "ChangeTime": "2021-04-15 13:52:50",
    "Class": "Verträge",
    "ClassID": "95",
    "ConfigItemID": 6146,
    "CreateBy": 1,
    "CreateTime": "2021-04-15 12:07:59",
    "CurDeplState": "Production",
    "CurDeplStateID": 16,
    "CurDeplStateType": "productive",
    "CurInciState": "Operational",
    "CurInciStateID": 1,
    "CurInciStateType": "operational",
    "LastVersionID": 6146,
    "Name": "Name",
    "Number": "8395000002"
  }
}
Meine Klasse hat ein Feld mit dem Namen Rufnummer das ich gerne abrufen würde: {
    'CountDefault' => 1,
    'CountMax' => 1,
    'CountMin' => 1,
    'CustomerVisible' => 0,
    'Input' => {
      'Type' => 'Text'
    },
    'Key' => 'Rufnummer',
    'Name' => 'Rufnummer',
    'Searchable' => 1
  }
Mir erschließt sich nicht welchen Parameter ich dem Aufruf mitgeben muss, um alle oder asugewählte Felder zurück zu bekommen.
Ebenso sieht es mit dem Erstellen von neuen CIs mit der Klasse aus.
Habt ihr da bereits Erfahrung oder könnt mir einen Tipp geben ?
MfG Marco

Torsten Thau

  • Global Moderator
  • Beiträge: 265
Re: CI via API abrufen und erstellen mit angepasster Klasse
« Antwort #1 am: 15.04.2021 16:25:21 »
Hallo Marco,

für die Abfrage ergänze bitte die Parameter "?include=CurrentVersion,PreparedData" -> z.B. "GET https://yourkix-api.domain.tld/api/v1/cmdb/configitems/1515?include=CurrentVersion,PreparedData". Das sieht dann z.B. so aus:

{
  "ConfigItem": {
    "ChangeBy": 10,
    "ChangeTime": "2021-04-15 16:08:07",
    "Class": "Computer",
    "ClassID": "4",
    "ConfigItemID": 1515,
    "CreateBy": 10,
    "CreateTime": "2021-04-15 16:08:06",
    "CurDeplState": "Maintenance",
    "CurDeplStateID": 13,
    "CurDeplStateType": "productive",
    "CurInciState": "Operational",
    "CurInciStateID": 1,
    "CurInciStateType": "operational",
    "CurrentVersion": {
      "Class": "Computer",
      "ClassID": "4",
      "ConfigItemID": 1515,
      "CreateBy": 10,
      "CreateTime": "2021-04-15 16:08:07",
      "CurDeplState": "Maintenance",
      "CurDeplStateID": 13,
      "CurDeplStateType": "productive",
      "CurInciState": "Operational",
      "CurInciStateID": 1,
      "CurInciStateType": "operational",
      "DeplState": "Maintenance",
      "DeplStateID": 13,
      "DeplStateType": "productive",
      "InciState": "Operational",
      "InciStateID": 1,
      "InciStateType": "operational",
      "Name": "chnb0001",
      "Number": "604000256",
      "PreparedData": [
        {
          "Key": "SectionGeneral",
          "Label": "General Information",
          "Sub": [
            {
              "DisplayValue": "Laptop",
              "Key": "Type",
              "Label": "Type",
              "Type": "GeneralCatalog",
              "Value": "27"
            },
            {
              "DisplayValue": "Lenovo",
              "Key": "Vendor",
              "Label": "Vendor",
              "Type": "Text",
              "Value": "Lenovo"
            },
            {
              "DisplayValue": "T480",
              "Key": "Model",
              "Label": "Model",
              "Type": "Text",
              "Value": "T480"
            },
            {
              "DisplayValue": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. \n\nAt vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
              "Key": "Description",
              "Label": "Description",
              "Type": "TextArea",
              "Value": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. \n\nAt vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
            }
          ],
          "Type": "Dummy"
        },
        {
          "Key": "SectionOwner",
          "Label": "Owner Information",
          "Sub": [
            {
              "DisplayValue": "A Company Manufactring Everything Ltd. Musterstr. 123 12345 Musterstadt",
              "Key": "OwnerOrganisation",
              "Label": "Assigned Organisation",
              "Type": "Organisation",
              "Value": "1"
            },
            {
              "DisplayValue": "Max Mustermann",
              "Key": "OwnerContact",
              "Label": "Assigned Contact",
              "Type": "Contact",
              "Value": "1"
            }
          ],
          "Type": "Dummy"
        },
        {
          "Key": "SectionNetwork",
          "Label": "Network Information",
          "Sub": [
            {
              "DisplayValue": "chnb0001",
              "Key": "FQDN",
              "Label": "FQDN",
              "Type": "Text",
              "Value": "chnb0001"
            },
            {
              "DisplayValue": "chnb001",
              "Key": "FQDN",
              "Label": "FQDN",
              "Type": "Text",
              "Value": "chnb001"
            }
          ],
          "Type": "Dummy"
        }
      ],
      "VersionID": 1551
    },
    "LastVersionID": 1551,
    "Name": "chnb0001",
    "Number": "604000256"
  }
}

Für das Erstellen/Updaten ist ein POST/PATCH auf "https://yourkix-api.domain.tld/api/v1/cmdb/configitems" (Update dann mit ID) mit (bspw.) folgendem Content zu versenden. Dabei müssen "Nicht-Text-Attribute" wie *StateID, OwnerORganisation oder OwnerContact, oder Type zuvor natürlich aufgelöst werden. Die Struktur unter "Data" ist allerdings direkt von der Assetklassendefinition abhängig. Im Beispiel ist das ein Schnipsel aus "Computer".

{
  "ConfigItem": {
    "ClassID": "4",
    "Version": {
      "ClassID": "5",
      "DeplStateID": 13,
      "InciStateID": 1,
      "Name": "chnb0001",
      "Data": {
        "SectionGeneral": {
          "Type": "27",
          "Vendor": "Lenovo",
          "Model": "T480",
          "Description": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. \n\nAt vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."
        },
        "SectionOwner": {
          "OwnerOrganisation": "1",
          "OwnerContact": "1"
        },
        "SectionNetwork": {
          "FQDN": ["chnb0001", "chnb001"]
        }
      }
    }
  }
}

Dies Response ist dann sowas

{
  "ConfigItemID": 1515
}


Ich sehe gerade das fehlt offenbar in der API-Beschreibung - sorry. Werden wir ergänzen

CU, Torsten


Tags: