Słowem wstępu

Czy podczas pisania kolejnego skryptu, który ma ułatwić waszą pracę nigdy nie zastanawialiście się czemu nie możemy użyć API do pobierania listy zadań w zgłoszeniu? My – jakiś czas temu – zastanawialiśmy się. Pierwsza myśl – sprawdzamy dokumentację w naszym testowym SD. No i pierwsze zaskoczenie – nie ma tam takiej operacji. Pomyśleliśmy – ok, może po prostu dokumentacja wbudowana w SDP jest jakaś niekompletna. Przeszliśmy więc do dokumentacji on-line na stronach producenta. Kolejne rozczarowanie. Ale nie bylibyśmy sobą, gdybyśmy tak szybko się poddali…

Pobieranie zadań – wersja 1

Po krótkich poszukiwaniach i działaniach metodą prób i błędów udało się odnaleźć taką operację, która zwróci listę zdań w zgłoszeniu. Całość okazała się banalnie prosta – nie będziemy się zbytnio rozpisywać. Po prostu zobaczcie poniższy kod:

$requestID = 121
$APIHeaders = @{TECHNICIAN_KEY=$APIKey}
$APIlink = "https://test-sdp.local/api/v3/request/$requestID/task"
$APIResponse = Invoke-webrequest -uri $APILink -method GET -body $body -Headers $APIHeaders

Udało się – działa. Radość jednak nie trwała długo – ale o tym w kolejnej sekcji

Pobieranie zadań – wersja 2 (po aktualizacji 10012)

No i nadszedł dzień aktualizacji SDP do wersji 10.012. Gdy już rozpoczęliśmy testy zauważyliśmy, że nie działa jeden z naszych skryptów, który miał generować alternatywny „wydruk” zgłoszenia. Rozwiązanie problemu okazało się banalnie proste – wystarczyło dodanie jednej litery

$requestID = 121
$APIHeaders = @{TECHNICIAN_KEY=$APIKey}
#zmieniamy /request/ na /requests/
$APIlink = "https://test-sdp.local/api/v3/requests/$requestID/task"
$APIResponse = Invoke-webrequest -uri $APILink -method GET -body $body -Headers $APIHeaders

Tym sposobem znów mogliśmy pobierać zadania i generować nasz alternatywny wydruk.

Pobieranie konwersacji

Od czasu udostępnienia wersji V3 API bacznie obserwujemy zmiany zachodzące w SDP. Dostajemy także sporo zapytań w zakresie różnic między V1 a V3. Jednym z takich zapytań było zapytanie o możliwość pobierania konwersacji w trzeciej odsłonie interfejsu. Podobnie jak w przypadku pobierania zadań do zgłoszenia nie znaleźliśmy opisu tej operacji w dokumentacji. Jednak znów nasza ciekawość wygrała.

W najnowszej wersji API pobieranie konwersacji zostało podzielone na dwie operację. Pierwszą z nich jest pobranie listy konwersacji:

$requestID = 121
$APIHeaders = @{TECHNICIAN_KEY=$APIKey}
$APIlink = "https://test-sdp.local/api/v3/requests/$requestID/conversations"
$APIResponse = Invoke-webrequest -uri $APILink -method GET -body $body -Headers $APIHeaders

Ale co z treścią konwersacji? No i tutaj dochodzimy właśnie do drugiej operacji, którą musimy wykonać. Aby pobrać zawartość konwersacji musimy wyciągnąć jej ID z powyższego zapytania a następnie wykonać operację pobrania zawartości:

$ConversationID = 1551
$APIHeaders = @{TECHNICIAN_KEY=$APIKey}
$APIlink = "https://test-sdp.local/api/v3/requests/$requestID/notifications/$($ConversationID)"
$APIResponse = Invoke-webrequest -uri $APILink -method GET -body $body -Headers $APIHeaders 

Tym sposobem możemy pobrać zawartość konwersacji z poziomu API V3 🙂

Na zakończenie

Artykuł ten powstał już jakiś czas temu lecz nie został opublikowany. Myśleliśmy, że wersja 10 ServiceDesk Plus będzie posiadała zaktualizowaną dokumentację. Tak się jednak nie stało więc podjęliśmy decyzję o publikacji niniejszego artykułu.