Migracja z API 2.0

Ten dokument zawiera listę wskazówek dotyczących migracji z poprzedniej wersji API, 2.0, do aktualnej wersji (API 3).

Uwagi ogólne

Wysokopoziomowy opis różnic pomiędzy API 2.0 a API 3 znajduje się w tym miejscu.

Niektóre z nazw metod API 2.0 miały szczególne znaczenie. Ich odpowiedniki w API 3 są opisane na liście standardowych operacji API:

Sposób autentykacji, obsługa sesji, schemat wersjonowania API, obsługa błędów itp. są opisane na liście konwencji stosowanych w API.

API 3 nie udostępnia interfejsu SOAP ani XML, jedynie JSON.

API 3 nie jest podzielone na moduły. Składa się z zestawu udostępnianych operacji, z których każda określa metodę HTTP, adres URL wywołania, dostępne parametry i schemat przesyłanej treści. Operacje są oznaczane tagami mającymi na celu łatwiejsze ich wyszukiwanie; tagi są widoczne na najwyższym poziomie interaktywnej dokumentacji. Operacja może być oznaczona więcej niż jednym tagiem.

Inaczej niż w wersji 2.0, API 3 wykorzystuje JSON-owe wartości true i false (w poprzedniej wersji były zamiast nich używane liczby 1 i 0).

API 3 domyślnie wykorzystuje format zapisu daty i czasu zdefiniowany w RFC 3339 zamiast timestampów uniksowych występujących w 2.0.

W dalszej części dokumentu opisano, w kolejności alfabetycznej, szczegółowe instrukcje i odpowiedniki dla każdego z modułów i każdej metody API 2 (jeśli takie odpowiedniki istnieją).

Account

Konta użytkowników są zwracane w inny sposób w API administracyjnym (/admin/accounts) i klienckim (/accounts). W API administracyjnym obiekty kont są złączone z danymi właściciela konta (user_data, obiekty User w API 2). Limity konta są zawarte w przypisanym mu pakiecie (obiekcie package).

Pola obiektu Account w API 2 odpowiadają następującym polom obiektów kont w API 3:

  • activated - is_activated (true lub false zamiast 0 lub 1),
  • available_intervals - niedostępne, można tworzyć usługi o dowolnym interval nie mniejszym niż określony w pakiecie konta,
  • blocked - is_blocked (true lub false zamiast 0 lub 1),
  • id - bez zmian,
  • max_locations_limit - package.maximum_sensors (wymaga dowiązania pakietu),
  • max_services - package.maximum_services (wymaga dowiązania pakietu),
  • max_sms_numbers - package.maximum_sms_numbers (wymaga dowiązania pakietu),
  • min_interval - package.minimum_interval (wymaga dowiązania pakietu),
  • min_locations_limit - niedostępne, jedynym warunkiem jest ustawienie przynajmniej jednej stacji monitorującej w grupie,
  • name - bez zmian,
  • notification_channels - package.available_notification_channel_ids (wymaga dowiązania pakietu),
  • package_id - bez zmian,
  • service_types - package.available_service_types (wymaga dowiązania pakietu).

Account::Activate

Aktywacja konta nie jest dostępna jako operacja administracyjna, odbywa się poprzez kliknięcie odnośnika w wiadomości e-mail wysyłanej przy rejestracji.

Konta utworzone przez administratorów oraz konta dodatkowych użytkowników istniejących kont nie wymagają aktywacji.

Account::Block

Jako administrator: POST /admin/accounts/{_id}/block

Account::Create

Rejestracja konta (nie wymaga autentykacji, na podany adres zostanie wysłany link aktywacyjny): POST /accounts/register

Utworzenie aktywnego konta dodatkowego użytkownika z dostępem do wszystkich usług na koncie głównym (być może read-only), ale bez możliwości tworzenia własnych usług: POST /accounts

Utworzenie aktywnego konta głównego z wybranym pakietem (jako administrator): POST /admin/accounts

Account::Delete

Jako administrator: DELETE /admin/accounts/{_id}

Account::Find

Jako administrator: GET /admin/accounts lub (zaawansowane) POST /admin/accounts/search

Jako użytkownik: GET /accounts lub (zaawansowane) POST /accounts/search

Uwaga: wynik może być inny niż w wersji 2.0, gdyż nowa wersja API obsługuje mechanizm udostępniania grup.

Account::Meta

Odpowiedniki metod Meta nie są dostępne w API 3. Do pobrania dostępna jest specyfikacja OpenAPI w formacie JSON.

Account::Read

Jako administrator: GET /admin/accounts/{_id}

Jako użytkownik: GET /accounts/{_id}

Pobranie własnego konta (jako użytkownik): GET /accounts/my_account

Pobranie konta, do którego należy wybrana grupa: GET /groups/{_id}/owner

Pobranie konta, do którego należy wybrana usługa: GET /services/{_id}/owner

Pobranie konta, do którego należy wybrany adres powiadomień: GET /notification_addresses/{_id}/owner

Pobranie konta, do którego należy wybrany adres raportów okresowych: GET /periodic_report_addresses/{_id}/owner

Account::Unblock

Jako administrator: POST /admin/accounts/{_id}/unblock

Account::Update

Jako użytkownik: PUT /accounts/{_id}

Jako administrator: PUT /admin/accounts/{_id}

Distributor

API 3 nie udostępnia odpowiedników operacji do zarządzania kontem dystrybucyjnym.

Administratorzy dystrybucji mają dostęp do API administracyjnego (operacje na zasobach /admin/...), umożliwiającego zarządzanie kontami i pakietami w dystrybucji.

Distributor::Create

Operacja niedostępna w API 3. Jeśli jesteś zainteresowany/a współpracą partnerską z Monit24.pl, skontaktuj się z nami.

Distributor::Find

Operacja niedostępna w API 3.

Distributor::Meta

Odpowiedniki metod Meta nie są dostępne w API 3. Do pobrania dostępna jest specyfikacja OpenAPI w formacie JSON.

Distributor::Read

Operacja niedostępna w API 3.

Distributor::Update

Operacja niedostępna w API 3.

Error

Lista błędów monitoringu jest publicznie dostępna, podobnie jak w wersji 2.0. Odpowiedniki pól obiektu Error z API 2 (zasób error_types):

  • comments - extra_info,
  • description - bez zmian,
  • diagnosis - bez zmian,
  • id - bez zmian,
  • name - bez zmian.

Error::Find

GET /error_types lub (zaawansowane) POST /error_types/search

Error::Meta

Odpowiedniki metod Meta nie są dostępne w API 3. Do pobrania dostępna jest specyfikacja OpenAPI w formacie JSON.

Error::Read

GET /error_types/{_id}

Group

Pola grup odpowiadające polom obiektów Group z API 2.0:

  • account_id - owner_id,
  • daily_reports - periodic_daily_reports (true lub false zamiast 0 lub 1),
  • default - is_default (true lub false zamiast 0 lub 1),
  • language - zmiana języka raportów i powiadomień nie jest dostępna dla grup,
  • location_ids - sensor_ids,
  • monthly_reports - periodic_monthly_reports (true lub false zamiast 0 lub 1),
  • name - bez zmian,
  • weekly_reports - periodic_weekly_reports (true lub false zamiast 0 lub 1),

Group::Create

POST /groups

Group::Delete

DELETE /groups/{_id}

Group::Find

GET /groups lub (zaawansowane) POST /groups/search

Pobranie grup należących do wybranego konta: GET /accounts/{_id}/groups

Pobranie grup należących do własnego konta: GET /accounts/my_account/groups

Pobranie grup, do których możemy przenieść wybraną usługę: GET /services/{_id}/available_groups

Group::FindLocations

GET /groups/{_id}/sensors lub poprzez dowiązanie listy stacji monitorujących do grupy.

Group::Meta

Odpowiedniki metod Meta nie są dostępne w API 3. Do pobrania dostępna jest specyfikacja OpenAPI w formacie JSON.

Group::Read

GET /groups/{_id}

Pobranie grupy domyślnej wybranego konta: GET /accounts/{_id}/default_group

Pobranie własnej grupy domyślnej: GET /groups/my_default_group

Pobranie grupy, do której należy wybrana usługa: GET /services/{_id}/group

Pobranie grupy, do której należy wybrany adres powiadomień: GET /notification_addresses/{_id}/group

Pobranie grupy, do której należy wybrany adres raportów okresowych: GET /periodic_report_addresses/{_id}/group

Group::SetLocation

Operacja niedostępna w API 3. Należy zmodyfikować pobraną wartość atrybutu sensor_ids grupy według uznania, a następnie odesłać ją w PUT /groups/{_id}.

Group::UnsetLocation

Operacja niedostępna w API 3. Należy zmodyfikować pobraną wartość atrybutu sensor_ids grupy według uznania, a następnie odesłać ją w PUT /groups/{_id}.

Group::Update

PUT /groups/{_id}

Location

Podobnie jak w wersji 2.0, lista stacji monitorujących jest publicznie dostępna.

Stacje monitorujące zmieniły nazwę z "Location" na "sensor". Odpowiedniki pól obiektu Location z wersji 2.0:

  • city - bez zmian,
  • color - niedostępne; w nowej wersji API stacje monitorujące nie mają przypisanych "oficjalnych" kolorów,
  • country - bez zmian,
  • id - bez zmian,
  • ip - ip_address,
  • is_available - bez zmian, ale przyjmuje wartość true lub false zamiast 0 lub 1,
  • link - links,
  • name - bez zmian,

Location::Find

GET /sensors lub (zaawansowane) POST /sensors/search

Pobranie listy stacji przypisanych do grupy: GET /groups/{_id}/sensors

Pobranie listy stacji, z których wybrana usługa jest monitorowana: GET /services/{_id}/monitoring_sensors

Location::Meta

Odpowiedniki metod Meta nie są dostępne w API 3. Do pobrania dostępna jest specyfikacja OpenAPI w formacie JSON.

Location::Read

GET /sensors/{_id}

Meta

W API 3 jedynym odpowiednikiem modułu Meta (publicznych informacji o samym API) jest statyczny dokument specyfikacji OpenAPI w formacie JSON.

Meta::ErrorsList

Lista błędów, które może zwracać każda z operacji, jest dostępna w specyfikacji OpenAPI oraz w interaktywnej dokumentacji.

Meta::Meta

Odpowiedniki metod Meta nie są dostępne w API 3. Do pobrania dostępna jest specyfikacja OpenAPI w formacie JSON.

Meta::ModulesList

API 3 nie jest podzielone na moduły, więc nie posiada odpowiednika tej metody.

NotificationAddress

Adresy powiadomień działają podobnie jak w API 2.0. Odpowiedniki pól obiektów NotificationAddress:

  • address - bez zmian,
  • group_id - bez zmian,
  • id - bez zmian,
  • notification_channel - notification_channel_id, email_long zmienił nazwę na email.

NotificationAddress::Create

POST /notification_addresses

NotificationAddress::Delete

DELETE /notification_addresses/{_id}

NotificationAddress::Find

GET /notification_addresses lub (zaawansowane) POST /notification_addresses/search

Adresy należące do wybranego konta: GET /accounts/{_id}/notification_addresses

Adresy przypisane do wybranej grupy: GET /groups/{_id}/notification_addresses

Adresy włączone dla wybranej usługi: GET /services/{_id}/notification_addresses

NotificationAddress::Meta

Odpowiedniki metod Meta nie są dostępne w API 3. Do pobrania dostępna jest specyfikacja OpenAPI w formacie JSON.

NotificationAddress::Read

GET /notification_addresses/{_id}

NotificationAddress::Update

PUT /notification_addresses/{_id}

Package

Pakiety są obsługiwane inaczej w API użytkownika i w API administracyjnym. Pola obiektu Package z API 2.0:

  • available_intervals - niedostępne, pakiet umożliwia tworzenie usług z dowolnym odstępem pomiędzy sprawdzeniami nie mniejszym niż minimum_interval,
  • id - bez zmian,
  • max_locations_limit - maximum_sensors,
  • max_services - maximum_services,
  • max_sms_numbers - maximum_sms_numbers,
  • min_interval - minimum_interval,
  • min_locations_limit - niedostępne, jedynym warunkiem jest ustawienie przynajmniej jednej stacji monitorującej w grupie,
  • name - bez zmian,
  • notification_channels - available_notification_channel_ids,
  • service_types - available_service_types.

Package::Find

Jako użytkownik: GET /packages lub (zaawansowane) POST /packages/search

Jako administrator: GET /admin/packages lub (zaawansowane) POST /admin/packages/search

Package::Meta

Odpowiedniki metod Meta nie są dostępne w API 3. Do pobrania dostępna jest specyfikacja OpenAPI w formacie JSON.

Package::Read

Jako użytkownik: GET /packages/{_id}

Jako administrator: GET /admin/packages/{_id}

Pobranie pakietu wybranego konta (jako użytkownik): GET /accounts/{_id}/package

Pobranie własnego pakietu (jako użytkownik): GET /packages/my_package

ReportAddress

Odpowiednikiem raportów okresowych z API 2.0 są obiekty periodic_report_addresses.

Pola obiektów ReportAddress:

  • address - bez zmian,
  • group_id - bez zmian,
  • id - bez zmian,
  • report_type - report_frequency.

ReportAddress::Create

POST /periodic_report_addresses

ReportAddress::Delete

DELETE /periodic_report_addresses/{_id}

ReportAddress::Find

GET /periodic_report_addresses lub (zaawansowane) POST /periodic_report_addresses/search

Lista adresów raportów w wybranej grupie: GET /groups/{_id}/periodic_report_addresses

Lista adresów raportów należących do wybranego konta: GET /accounts/{_id}/periodic_report_addresses

Lista adresów, na które będą wysyłane raporty dla wybranej usługi: GET /services/{_id}/periodic_report_addresses

ReportAddress::Meta

Odpowiedniki metod Meta nie są dostępne w API 3. Do pobrania dostępna jest specyfikacja OpenAPI w formacie JSON.

ReportAddress::Read

GET /periodic_report_addresses/{_id}

ReportAddress::Update

PUT /periodic_report_addresses/{_id}

Service

Pola obiektów Service z API 2.0 i odpowiadające im pola usług i ich aktualnych statusów w API 3:

  • avg_response_time - niedostępne; dla pojedynczej usługi można pobrać identyfikator ostatniej wykonanej analizy dowiązując status.last_analysis_id, a następnie uśrednić czasy odpowiedzi ze sprawdzeń wchodzących w jej skład (GET /services/{_id}/history/analyses/{_analysis_id}/checks),
  • daily_silent_mode_hours - silent_hours, napis złożony z 24 znaków 0 lub 1 zamiast tablicy 24 wartości typu boolean,
  • description - bez zmian,
  • error - status.check_status == "failure" (wymaga dowiązania status),
  • features - extended_settings, format zmieniony z tablicy obiektów klucz-wartość na pojedynczy obiekt,
  • group_id - bez zmian,
  • id - bez zmian,
  • interval - bez zmian, ale może zostać ustawiony dowolny nie mniejszy niż limit określony w pakiecie,
  • last_invalid_check - status.last_failure_analysis_time (RFC 3339 zamiast timestampa uniksowego, wymaga dowiązania status),
  • last_valid_check - status.last_ok_analysis_time (RFC 3339 zamiast timestampa uniksowego, wymaga dowiązania status),
  • locations_status - niedostępne; dla pojedynczej usługi można pobrać sprawdzenia wchodzące w skład ostatniej wykonanej analizy za pomocą zapytania GET /services/{_id}/history/analyses/last_analysis/checks,
  • name - bez zmian,
  • notification_channels - notification_channel_ids,
  • notification_conditions - notification_condition_ids, wartość bad zmieniona na failure, ok na recovery, still_bad na failure_continuation, a still_bad_after_silent_mode na silent_failure,
  • notification_delay - niedostępne w API 3,
  • notification_mode - notification_mode_id, wartość immediately zmieniona na default, wartości after_X_minutes zmienione na after_X_minutes_failure,
  • pause - negacja is_active (true lub false zamiast 0 lub 1),
  • silent_mode - status.notifications_status == "silent" (wymaga dowiązania status),
  • status - status.summary (wymaga dowiązania status):
  • status_text - niedostępne w API 3,
  • suspension - status.monitoring_status == "suspended" (wymaga dowiązania status),
  • type_id - w API 3 typy mają identyfikatory tekstowe (symbole, np. "http"),
  • type_name - type.name (wymaga dowiązania type),
  • type_prefix - type.address_prefix (wymaga dowiązania type),
  • url - address,
  • weekly_suspension_hours - suspension_hours, napis złożony z 168 znaków 0 lub 1 zamiast tablicy 168 wartości typu boolean.

Service::Create

POST /services

Service::Delete

DELETE /services/{_id}

Service::Find

GET /services lub (zaawansowane) POST /services/search

Pobranie usług należących do wybranego konta: GET /accounts/{_id}/services

Pobranie własnych usług: GET /accounts/my_account/services

Pobranie usług należących do wybranej grupy: GET /groups/{_id}/services

Pobranie usług należących do własnej grupy domyślnej: GET /groups/my_default_group/services

Service::Meta

Odpowiedniki metod Meta nie są dostępne w API 3. Do pobrania dostępna jest specyfikacja OpenAPI w formacie JSON.

Service::Read

GET /services/{_id}

Pobranie usługi do której jest przypisane wybrane zaplanowane zawieszenie: GET /suspensions/{_id}/service

Service::Update

PUT /services/{_id}

ServiceSuspension

Bezpośrednim odpowiednikiem obiektów ServiceSuspension z API 2.0 są obiekty suspensions.

Zmiany w polach obiektów ServiceSuspension:

  • comment - description,
  • end_timestamp - end_time (RFC 3339 zamiast timestampa uniksowego),
  • id - bez zmian,
  • service_id - bez zmian,
  • start_timestamp - start_time (RFC 3339 zamiast timestampa uniksowego).

ServiceSuspension::Create

POST /suspensions

ServiceSuspension::Delete

DELETE /suspensions/{_id}

ServiceSuspension::Find

GET /suspensions lub (zaawansowane) POST /suspensions/search

Pobranie listy zawieszeń dla wybranej usługi: GET /services/{_id}/suspensions

ServiceSuspension::Meta

Odpowiedniki metod Meta nie są dostępne w API 3. Do pobrania dostępna jest specyfikacja OpenAPI w formacie JSON.

ServiceSuspension::Read

GET /suspensions/{_id}

ServiceType

Pola obiektów ServiceType z API 2.0 i odpowiadające im pola obieków service_types w API 3:

  • features - dostępne poprzez dowiązanie tablicy extended_setting_formats; odpowiedniki poszczególnych pól są następujące:
    • advanced - niedostępne w API 3,
    • default - bez zmian,
    • desc - zmienione na description,
    • id - zmienione na setting_id; jednoznacznym identyfikatorem obiektu specyfikacji ustawienia jest para service_type_id, setting_id,
    • interactor_specification.options - zmienione na prostą tablicę enum,
    • interactor_specification.type - zmienione na suggested_form_element,
    • max - zmienione na maximum,
    • max_length - zmienione na maximum_length,
    • min - zmienione na minimum,
    • min_length - zmienione na minimum_length,
    • nullable - zmienione na is_nullable,
    • options - zmienione na enum,
    • regex - zmienione na pattern,
    • type - nazwa pola bez zmian; dopuszczalne wartości: string, integer, number, boolean i regex.
  • id - w API 3 typy usług identyfikowane są tekstowym symbolem,
  • is_available - niedostępne; aby pobrać listę dostępnych typów dla konta należy użyć operacji GET /accounts/{_id}/available_service_types,
  • name - bez zmian,
  • prefix - addres_prefix,
  • quota - niedostępne, limity usług dla konta można sprawdzić pobierając jego pakiet,
  • used - niedostępne, niewykorzystane limity usług poszczególnych typów można pobrać za pomocą operacji GET /accounts/{_id}/available_service_types.

ServiceType::Find

GET /service_types lub (zaawansowane) POST /service_types/search

Limity typów dla wybranego konta: GET /accounts/{_id}/available_service_types

Limity typów dla wybranej grupy (takie, jak dla konta, do którego należy grupa): GET /groups/{_id}/available_service_types

ServiceType::Meta

Odpowiedniki metod Meta nie są dostępne w API 3. Do pobrania dostępna jest specyfikacja OpenAPI w formacie JSON.

ServiceType::Read

GET /service_types/{_id}

Typ wybranej usługi: GET /services/{_id}/type

Stats

Moduł Stats został podzielony na kilka grup operacji i znacznie poszerzony:

  • charts - operacje zwracające dane do wykresów szybkości działania i dostępności,
  • history - operacje zwracające dane o historii monitoringu: analizy, sprawdzenia, treść strony z momentu awarii, pliki HAR, zmiany statusu usługi itp.,
  • admin - niektóre ze statystyk dostępnych dla administratora.

Uwaga: Identyfikator analizy (analysis_id) jest tym samym, co iteration_id z API 2.0

Stats::Checks

Pobranie listy sprawdzeń dla wybranej usługi: GET /services/{_id}/history/checks

Uwaga: powyższa operacja zwraca wyniki z ograniczonego przedziału czasowego, z paginacją. Zapoznaj się z jej dokumentacją przed użyciem.

Uwaga 2: Statystyki z rozbiciem na fazy żądań dla sprawdzeń FullPage są dostępne jedynie w plikach HAR.

Pobranie listy sprawdzeń z wybranej analizy działania usługi: GET /services/{_id}/history/analyses/{_analysis_id}/checks

Stats::ErrorList

Pobranie listy błędnych sprawdzeń dla wybranej usługi: GET /services/{_id}/history/checks?result=error

Uwaga: powyższa operacja zwraca wyniki z ograniczonego przedziału czasowego, z paginacją. Zapoznaj się z jej dokumentacją przed użyciem.

Stats::HARContent

Pobranie pliku HAR z wybranego sprawdzenia: GET /services/{_id}/history/analyses/{_analysis_id}/checks/{_sensor_id}/artifacts/har/plain

Stats::HARList

Pobranie listy sprawdzeń, dla których są dostępne pliki HAR: GET /services/{_id}/history/checks?har_available=true

Uwaga: powyższa operacja zwraca wyniki z ograniczonego przedziału czasowego, z paginacją. Zapoznaj się z jej dokumentacją przed użyciem.

Stats::Meta

Odpowiedniki metod Meta nie są dostępne w API 3. Do pobrania dostępna jest specyfikacja OpenAPI w formacie JSON.

Stats::MonthlyCheckCounters

Jako administrator: GET /admin/usage_stats/by_account/{year}/{month}

Stats::MonthlyGroupCheckCounters

Jako administrator: GET /admin/usage_stats/by_group/{year}/{month}

Stats::ResponseTime

GET /serivces/{_id}/charts/performance

Uwaga: operacja ta nie używa stałego zbioru interwałów, a zagregowane punkty nie muszą odpowiadać równym przedziałom czasowym.

Stats::ServiceLevel

GET /services/{_id}/history/service_level

Nie jest dostępne pobieranie danych dostępności dla wszystkich usług jednocześnie.

Stats::ServiceLevel1H

GET /services/{_id}/charts/availability?limit=1000

Stats::ServiceLevelSummary

Operacja niedostępna w API 3.

User

Obiekty User zostały podzielone na accounts (dane dostępne dla innych użytkowników, np. przy udostępnianiu) i user_data (prywatne dane użytkownika). Każde konto (account) posiada stowarzyszony obiekt user_data o tym samym identyfikatorze.

W API administracyjnym konta zawierają także pola user_data.

Pola obiektów User z API 2.0:

  • account_id - tożsame z account.id oraz user_data.id,
  • address - user_data.address,
  • contact_person - user_data.contact_person,
  • contact_phone - user_data.phone_numer,
  • email - user_data.email_address,
  • id - tożsame z account.id oraz user_data.id,
  • language - account.language_id; identyfikator języka w słowniku languages,
  • last_login_ip - niedostępne w API 3,
  • last_login_timestamp - niedostępne w API 3,
  • login - account.username,
  • tax_id - user_data.tax_identification_number.

User::Find

Niedostępne dla użytkownika. Możliwe jest pobranie jedynie listy kont.

Jako administrator informacje o użytkownikach można pobrać w ten sam sposób, co dane kont.

User::Login

POST /auth_token lub z użyciem OAuth2.

User::Logout

DELETE /auth_token lub z użyciem OAuth2.

User::Meta

Odpowiedniki metod Meta nie są dostępne w API 3. Do pobrania dostępna jest specyfikacja OpenAPI w formacie JSON.

User::Read

Pobranie danych wybranego użytkownika: GET /user_data/{_id}

Pobranie własnych danych: GET /user_data/my_user_data

User::Update

Modyfikacja danych użytkownika: PUT /user_data/{_id}

Modyfikacja własnych danych: PUT /user_data/my_user_data