Autor Thema: Nutzer der API zum anlegen/bearbeiten der Jobs  (Gelesen 97 mal)

m.greune

  • Newbie
  • Beiträge: 168
Nutzer der API zum anlegen/bearbeiten der Jobs
« am: 22.11.2021 16:03:31 »
Hallo.


Ich versuche aktuell Jobs über die API anzulegen bzw. zu bearbeiten (über Ansible). Nun ist es so, dass ich ein BadRequest erhalte, wenn der Job schon existiert. Ich kann den Status abfangen und prüfen, ob er 409 ist und dann ein PATCH machen. Leider habe ich an dem Punkt aber die ID des Jobs nicht und ohne die ID funktioniert auch das patchen nicht.


Gibt es eine Möglichkeit, dass ich irgendwie die ID auslese, ohne alle Jobs auszulesen und dann "manuell" nach dem passenden zu suchen (bzw. mit einem extra Script)? Beim GET für Jobs kann ich ja z.B. einen filter als Query angeben, jedoch kann ich da scheinbar nicht nach einem Namen oder ähnlichem filtern, sondern nur nach einem tatsächlich angegebenen Filter in diesem Job?! Ich habe dort bei allen möglichen Versuchen ein BadRequest mit "JSON parse error in filter!" erhalten.


Es wäre hilfreich, dass beim POST mit der Antwort 409 die ID des bereits vorhandenen Objekts zurück gegeben wird. Oder das man bei einem GET spezifischer "suchen" kann, z.B. nach dem "Name" des Jobs.


Viele Grüße
Marvin




Edit:
Alternativ dazu wäre es gut, wenn man auch die Jobs mit einer vorgegebenen ID anlegen könnte. Dann wüsste ich wonach ich suchen muss bzw. könnte ein PATCH auf die von mir verwendete ID machen, wenn auf den POST ein 409 zurück kommen würde.

Torsten Thau

  • Global Moderator
  • Beiträge: 167
Re: Nutzer der API zum anlegen/bearbeiten der Jobs
« Antwort #1 am: 01.12.2021 09:47:58 »
Hallo Marvin,


ich bitte die späte Rückmeldung zu entschuldigen. Wir arbeiten für die kommenden Releases daran eine Ex-/Import-Schnittstelle für mehrere Konfigurationsobjekte zu schaffen. Der API-Endpunkt wird in v21 bereits enthalten sein. Die Frontend-Integration vielleicht erst in 2022. Ich denke dass dieser Ansatz sicher auch in Deinem Szenario hilfreich sein wird.


Die Filterung auf den Job-Namen kann wie folgt abgebildet werden.

GET: {{ host  }}/{{ webapi  }}/system/automation/jobs

mit Param "filter", der folgenden Wert hat (hier nur Jobs deren Name LIKE "Anon*"

{"Job": {"AND": [{"Field": "Name", "Operator": "LIKE", "Value": "Anon*"}]}}

oder direkt als URL

https://your-api.kix.cloud/api/v1/system/automation/jobs?filter=%7B%22Job%22%3A%20%7B%22AND%22%3A%20%5B%7B%22Field%22%3A%20%22Name%22,%20%22Operator%22%3A%20%22LIKE%22,%20%22Value%22%3A%20%22Anon*%22%7D%5D%7D%7D


Hoffe das hilft - CU, Torsten

Tags: