MAC-Adresse(n) mit API (JSON-RPC) ändern?


  • Guten Tag,
    ich versuche aktuell die MAC-Adressen eines Objektes via API zu ändern. Grundsätzlich sollen alle vorhandenen MAC-Adressen geändert werden, allerdings finde ich schon nicht heraus, wie man eine einzelnde MAC ändern kann.

    Mein aktuelles JSON sieht so aus:

    {
        "version": "2.0",
        "method": "cmdb.object.update",
        "params": {
            "id": 723848,
            "title": "Test",
            "apikey": "****",
            "language": "de",
            "category":"C__CATG__NETWORK_PORT",
        },
        "id": 1
    }
    

    Der Titel ändert sich auch erfolgreich, allerings weiß ich nicht, wie ich nun eine der beiden MAC-Adressen ändern kann (siehe Bild).

    Unbenannt.PNG

    Mit freundlichen Grüßen
    Nick


  • Hallo @Nick ,

    mit der Methode 'cmdb.object.update' wird nur das Objekte upgedated und zwar die Bezeichnung des Objektes.
    Wenn du Daten in anderen Kategorien ändern möchtest musst du die Methode 'cmdb.category.save' verwenden.

    Zuerst solltest du dir aber die Doku zur i-doit API anschauen, dort sind die Methoden beschrieben und es gibt Beispiele.
    Außerdem gibt es noch die Hilfe in i-doit unter Verwaltung > Schnittstelle / externe Daten > JSON-RPC API > Kategorien und Attribute.


  • @michael-overkamp said in MAC-Adresse(n) mit API (JSON-RPC) ändern?:

    cmdb.category.save

    Hallo @Michael-Overkamp,
    danke für deine Antwort. Ich habe es auch zu der Zeit mit mit 'cmdb.category.save' probiert. Ich nutze dann natürlich die Variante.

    Ich habe allerdings eher eine andere Frage:

    Wie komme ich nun speziell an eine der MAC-Adressen ran und kann diese ändern, wenn die Kategorie mehre MAC-Adressen hat?
    Aktuell sieht meine Abfrage so aus:

    {
      "version": "2.0",
      "method": "cmdb.category.save",
      "params": {
          "objID": 716878,
          "data": {
              "mac": "Test"
          },
          "catgID": "C__CATG__MODEL",
          "apikey": "*****",
          "language": "de"
      },
      "id": 1
    }
    

    Ich habe die Doku gelesen, finde allerdings keine relevanten Informationen.


  • @nick
    Hier mal meine Abfrage:

    {
        "version": "2.0",
        "method": "cmdb.category.read",
        "params": {
            "objID": 716878,
            "apikey": "*****",
            "language": "de",
            "category":"C__CATG__NETWORK_PORT",
        },
        "id": 1
    }
    

    Und das Ergebnis:

    {
      id: 1,
      jsonrpc: '2.0',
      result: [
        {
          id: '35726',
          objID: '716878',
          title: '',
          interface: [],
          port_type: null,
          port_mode: [Object],
          plug_type: null,
          negotiation: null,
          duplex: null,
          speed: null,
          speed_type: null,
          standard: null,
          mac: '*****',
          mtu: null,
          assigned_connector: null,
          connector: '35726',
          connector_sibling: null,
          cable: [],
          active: [Object],
          addresses: [],
          layer2_assignment: [],
          hba: null,
          default_vlan: null,
          description: "'Mac-Adresse'",
          relation_direction: null
        },
        {
          id: '35727',
          objID: '716878',
          title: '',
          interface: [],
          port_type: null,
          port_mode: [Object],
          plug_type: null,
          negotiation: null,
          duplex: null,
          speed: null,
          speed_type: null,
          standard: null,
          mac: '*****',
          mtu: null,
          assigned_connector: null,
          connector: '35727',
          connector_sibling: null,
          cable: [],
          active: [Object],
          addresses: [],
          layer2_assignment: [],
          hba: null,
          default_vlan: null,
          description: "'Mac-Adresse WAN'",
          relation_direction: null
        }
      ]
    }
    

  • Hallo @Nick ,

    bei Multi-Value Kategorien haben die Einträge ID´s.
    In deinem Beispiel sind dies:

    id: '35726',
    

    und

    id: '35727',
    

    Somit würde cmdb.category.save für den Eintrag '35726' so lauten:

    {
        "version": "2.0",
        "method": "cmdb.category.save",
        "params": {
            "object": 716878,
           "entryID":35726,
            "apikey": "*****",
            "language": "de",
            "category":"C__CATG__NETWORK_PORT",
             "data": {
        		"mac":"AA:AA:AA:AA:AA:AA"
        		}, 
      },
        "id": 1
    }
    

  • Hi @michael-overkamp

    dann war ich auf einem sehr guten Weg. "entry" und "id" hatte ich auch schon probiert.
    Allerdings geht es immernoch nicht ...

    {
      id: null,
      jsonrpc: '2.0',
      error: {
        code: -32600,
        message: 'Invalid request : Provided request is not a valid json rpc.',
        data: null
      }
    }
    

    Habs genau so genommen, wie du geschrieben hast.