Hauptmenü

REST-API: Alle an einem Tag geänderten Tickets ermitteln

Begonnen von UweNaumann, 07.11.2024 17:20:02

⏪ vorheriges - nächstes ⏩

UweNaumann

Hallo zusammen,

ich darf/muss/will via REST-API alle Tickets ermitteln, die an einem bestimmten Tag geändert wurden. Generell laufen die API-Aufrufe soweit problemlos. Wenn ich ein Ticket via Id abrufe bekomme ich folgendes Ergebnis:

{
 "Ticket": {
 "ChangeBy": 1,
 "Changed": "2024-11-07 15:30:10",
 "ContactID": "654",
 "CreateBy": 1,
 "Created": "2023-11-09 10:45:10",
 "LockID": 1,
 "OrganisationID": "1",
 "OwnerID": 5,
 "PendingTime": "",
 "PendingTimeUnix": 0,
 "PriorityID": 3,
 "QueueID": 8,
 "ResponsibleID": 5,
 "StateID": 2,
 "TicketID": 2054,
 "TicketNumber": "2023110998000139",
 "Title": "###################################",
 "TypeID": 8,
 "UntilTime": 0
 }
}

Soweit alles bestens. Auch filtern über andere Parameter (Status, Organisation, etc.) funktioniert soweit problemlos.

Also via GET-Aufruf /tickets mit entsprechenden Suchparametern. Lt. Doku ist Changed ein String-Feld.


{
"Ticket": {
"AND": [
{
"Field": "Changed",
"Operator": "STARTSWITH",
"Value": "2024-11-07"
}
]
}
}

Dies bringt so leider eine leere Liste als Ergebnis, obwohl entsprechende Tickets vorhanden sind. Es wird kein Fehler geworfen. Auch ein explizites Ergänzen von "Type": "STRING" bringt keine Änderungen.

Auch diverse Versuche mit Datentyp DATE oder DATETIME und entsprechend angepassten Parametern bringen keine Änderung.

Wo liegt mein Denkfehler? Jemand ne Idee? KIX 18 V33.1 (aktuelle Version).

VG Uwe

Frank Niethardt

Moin Uwe,

ich hab das zwar selbst noch nicht gemacht, aber wenn ich die API Doku so lese, kannst du ja mit /ticket?search={} oder /ticket?filter={} anfragen. Wobei search wohl direkt auf der DB sucht, filter aber die API benutzt. Deswegen gehen - laut Doku - nicht alle Anfragen mit search, die mit filter gehen.

Was benutzt du? Hast du das jeweils Andere mal probiert?

Viele Grüße
Frank

UweNaumann

Hi Frank,

der Fingerzeig war schon mal nicht schlecht: filter bringt schon mal mehr Ergebnisse als search. Wobei ich das schon seltsam finde, dass search trotzdem einen Response 200/Ok liefert, wenn das Ganze so garnicht geht. Ich hätte da aus Programmierersicht eine Exception erwartet.

Im Ganzen wird es aber trotzdem nicht besser. Lt. Doku sind Created und Changed am Ticket String-Werte. Damit bekomme ich immer, egal welche Parameterkombination ich nutze, ein leeres Ergebnis ( Response 200/Ok, keine Daten).

Setze ich den Filter auf Typ DATETIME, dann bekomme ich zumindest beim Feld Changed auch mal Daten zurück, wenn auch viel zu wenig (nur paar einzelne Datensätze). Bei Created bekomme ich auch hier nur ein leeres Ergebnis ( Response 200/Ok, keine Daten).

Alles sehr merkwürdig.

{
"Ticket": {
"AND": [
{
"Field": "Changed",
"Operator": "GTE",
"Value": "2024-11-01 00:00:00",
"Type": "DATETIME"
}
]
}
}



Zugriffsrechte-Probleme würde ich mal ausschließen, da ich die Daten ja bekomme, wenn ich z.Bsp. über die Ticketnummer suche (STARTSWITH: 20241101) oder die Tickets direkt via Id lade.

Dennis Scheunert

Hallo Uwe,

versuche es mal mit folgendem Filter:
{
"Ticket":{
"AND":[
{
"Field":"Changed",
"Operator":"GTE",
"Value":"2024-11-13 00:00:00",
"Type":"DATETIME"
},
{
"Field":"Changed",
"Operator":"LT",
"Value":"2024-11-14 00:00:00",
"Type":"DATETIME"
}
]
}
}

Beste Grüße
Dennis

UweNaumann

Hi Dennis,

das hatte ich so ähnlich auch schon versucht, mit identischen Ergebnissen wie schon beschrieben.

Ich habs trotzdem nochmal durchgespielt.

Via API bekomme ich 200/OK mit einem Datensatz.

Suche ich im KIX-Agentenportal, dann bekomme ich 5 Treffer. 

Dabei sollte die API-Suche sogar noch mehr finden, da der API-Nutzer Zugriff auf alle Teams hat, im Gegensatz zu meiner Anmeldung.

VG Uwe

kix_api.png
kix_suche_1.png
kix_suche_2.png

Dennis Scheunert

Hallo Uwe,

könntest du mir mal die zeigen wie die Header bei dir aussehen im API Programm?
Und benutzt du denselben Agenten im API Programm wie im KIX?

Beste Grüße
Dennis

UweNaumann


Dennis Scheunert

Hallo Uwe,

Insomnia sieht so weit gut aus.
Hat der User ausreichend Berechtigungen, den du für die API Suche verwendest? Versuch es mal mit einem Superuser.

Hast du vielleicht in der SysConfig was eingestellt? Wenn du dort nach *limit* suchst, ist das was modified?

Beste Grüße
Dennis

UweNaumann

Hi Dennis,

der bisherige Nutzer ist unser API-Nutzer, der hat entsprechende Leserechte. Wich weiter oben ja schon schrieb lassen sich die entsprechenden Tickets ja auch aufrufen, wenn ich sie direkt via Id lade oder über andere Suchkriterien suche. Die Probleme machen nur die Datumssuchen.

Auch mit dem admin oder unserem eigenen kix-admin-Konto (auch volle Rechte) gibt es keine anderen Ergebnisse.

An den SysConfig-Werten hat auch keiner gedreht, alles default.

sysconfig.png

Zitat aus der Doku: " You can use an optional filter function to filter the items in the response of collections."

Wirkt hier der Filter evtl. additiv zu den Search-Limits? Und wie tickt das intern genau?

VG Uwe

Dennis Scheunert

Hallo,

könnte es sein, dass du möglicherweise zwei Systeme parallel laufen hast und versehentlich das falsche System abfragst, in dem die Daten nicht aktuell sind?

Beste Grüße
Dennis

UweNaumann

Hi Dennis,

das können wir ausschließen, es gibt hier nur ein KIX-System.

VG Uwe