Strona główna / EWM API
Programiści

WEDOS EWM – dokumentacja API

WEDOS Early Warning and Monitoring (EWM) oferuje API, czyli interfejs programistyczny, dzięki któremu użytkownicy mogą pobierać informacje o swoich monitorowanych domenach, kontrolach usług i ich bieżącym statusie. Można w ten sposób zaprogramować połączenie monitoringu z własną aplikacją lub automatycznie śledzić nowe zdarzenia monitorowanych domen i usług.

Protokół
HTTPS
Metoda
GET
Format
JSON (UTF-8)
Bazowy URL
https://api.wedos.online/mon/
Limit
1000 / godzinę na IP i użytkownika
Dostępność: to API jest dostępne wyłącznie w wariancie usługi HighAvailability.

Aktywacja API

Dostęp do API można aktywować w administracji EWM, do której wejdziesz przez client.wedos.com w szczegółach konkretnej domeny, dla której masz aktywną tę płatną usługę. W administracji EWM wybierz Ustawienia -> sekcja Ustawienia API. Aktywacja generuje klucz API (podobny do hasła), którego następnie użyjesz do uwierzytelnienia w komunikacji API.

Podstawowe informacje

Komunikacja z API odbywa się przez HTTPS, metodą GET. Niektóre metody przyjmują parametry w adresie URL (parametry GET).

Wszystkie metody zwracają odpowiedź w postaci obiektu JSON. Wszystkie dane w odpowiedzi są w kodowaniu UTF-8.

W każdej odpowiedzi znajduje się pozycja requestId, która jednoznacznie identyfikuje żądanie. Na podstawie tego identyfikatora jesteśmy w stanie odnaleźć konkretną komunikację w naszym logu, gdy pojawi się problem lub pytanie.

API znajduje się pod adresem https://api.wedos.online/mon/ + nazwa konkretnej metody.

Uwierzytelnianie użytkownika odbywa się za pomocą specjalnych nagłówków HTTP – w każdym żądaniu podaje się ID klucza API (X-Auth-Id) oraz klucz API (X-Auth-Key).

NagłówekWartość
X-Auth-IdID Twojego klucza API
X-Auth-KeyTwój klucz API

API ma następujące ograniczenia:

  • maks. 1000 żądań na godzinę z jednego adresu IP
  • maks. 1000 żądań na godzinę od jednego użytkownika

Witaj świecie!

To wywołanie metody o nazwie ping, dzięki której łatwo sprawdzisz, że komunikacja API i uwierzytelnianie działają.

GET https://api.wedos.online/mon/ping

Żądanie

GET /mon/ping HTTP/1.1
Host: api.wedos.online
Accept: application/json
X-Auth-Id: me@example.com
X-Auth-Key: MY_API_KEY

Odpowiedź powinna wyglądać mniej więcej tak

{
    "stamp": 1613393366,
    "time": "2021-02-15 13:49:26",
    "userId": 1000,
    "requestId": "3bb52d4d22.1613393366.2811.82063"
}

W przypadku błędu serwer zwraca kod odpowiedzi HTTP inny niż 200, a w treści odpowiedzi jest doprecyzowanie błędu: podany jest kod błędu i jego opis. Przykład:

{
    "error": {
        "code": "C507",
        "error": "Authentication failed"
    },
    "requestId": "1495544185.1615.8422"
}

Listy, filtrowanie, stronicowanie

Niektóre metody API zwracają listę pozycji (np. listę domen). Metody te mają wspólne funkcje oraz wspólne parametry wejściowe i dane wyjściowe.

Częścią wyniku metod odczytu list są zawsze następujące pozycje:

PozycjaZnaczenie
resultstablica obiektów z poszczególnymi pozycjami listy
pagenumer strony (patrz stronicowanie poniżej)
countliczba zwróconych pozycji
filteredCountliczba wszystkich pozycji pasujących do bieżącego filtra (patrz filtrowanie poniżej)
totalCountliczba wszystkich pozycji

Przykład odpowiedzi (poszczególne pozycje nie są tu podane):

{
    "results": [
        ...
    ],
    "page": 1,
    "count": 10,
    "filteredCount": 18,
    "totalCount": 624,
    "requestId": "..."
}

Ta konkretna odpowiedź oznacza, że w bazie dla bieżącego użytkownika istnieje łącznie 624 pozycji (np. domen), z czego 18 pasuje do ustawionych filtrów, a zwrócono pierwszych 10 (pierwsza strona, stronicowanie po 10 pozycji).

W żądaniu listy można podać jeden lub więcej filtrów. Podaje się je jako parametry GET. Na tej podstawie wybierane są zwracane pozycje.

Pozycje list można stronicować, czyli zwracać tylko w określonych ilościach. API pozwala zwrócić maksymalnie 1000 pozycji na jedno wywołanie. Domyślne stronicowanie to 100 pozycji.

Do stronicowania i/lub ograniczenia liczby zwracanych pozycji można użyć tych wejściowych parametrów GET:

ParametrZnaczenie
pagenumer strony (domyślnie 1)
countliczba zwracanych pozycji, tj. rozmiar strony (domyślnie 100)

Przykład wypisania 10 pozycji na drugiej stronie (pozycje 11 do 20):

GET https://api.wedos.online/mon/domains?page=2&count=10

Lista domen

Metoda o nazwie domains umożliwia pobranie listy Twoich domen monitorowanych przez EWM.

URL żądania:

GET https://api.wedos.online/mon/domains

Przykład odpowiedzi

{
    "results": [
        {
            "ID": 24,
            "name": "example.com",
            "status": "warning",
            "checks": {
                "domain": { "checkId": null },
                "http": { "checkId": 5056 },
                "dnsauth": { "checkId": 5052 },
                "dnssec": { "checkId": 5178 },
                "mx": { "checkId": 5093 },
                "smtp": { "checkId": 5066 },
                "pop3": { "checkId": 5095 },
                "imap": { "checkId": 5098 },
                "ftp": { "checkId": 5183 },
                "ssh": { "checkId": 5184 },
                "spf": { "checkId": 5110 }
            }
        }
    ],
    "page": 1,
    "count": 1,
    "filteredCount": 1,
    "totalCount": 1,
    "requestId": "3bb52d4d22.1615325171.8202.150654"
}

Tutaj widzisz ogólny status wszystkich monitorowanych domen oraz listę kontroli wykonywanych dla każdej domeny.

Jeśli chcesz poznać szczegóły, możesz pobrać szczegóły konkretnej domeny metodą domain albo szczegóły konkretnej kontroli metodą check (użyj wartości checkId jako identyfikatora konkretnej kontroli).

Szczegóły domeny

Aby uzyskać szczegółowe informacje o jednej konkretnej domenie i jej kontrolach (monitorowanych usługach), użyj metody domain.

GET https://api.wedos.online/mon/domain/24

Przykład odpowiedzi (wynik został skrócony)

{
    "domain": {
        "ID": 24,
        "name": "example.com",
        "status": "warning",
        "checks": {
            "domain": { "checkId": null },
            "http": {
                "checkId": 5056,
                "status": "ok",
                "name": "example.com HTTP",
                "type": "http",
                "period": 60,
                "fullTarget": "https://example.com/",
                "domainId": 24,
                "statusStamp": 1613140656,
                "statusDate": "2021-02-12 14:37:36",
                "createdStamp": 1604348089,
                "createdDate": "2020-11-02 20:14:49",
                "uptime_1d": 100,
                "errorSeconds_1d": 0,
                "avgTime_1d": 111,
                "uptime_7d": 100,
                "errorSeconds_7d": 0,
                "avgTime_7d": 109,
                "uptime_30d": 99.994,
                "errorSeconds_30d": 57,
                "avgTime_30d": 114,
                "warningsCount": 0
            },
            "dnsauth": { ... },
            "dnssec": { ... },
            "mx": { ... },
            "smtp": { ... },
            "pop3": { ... },
            "imap": { ... },
            "ftp": { ... },
            "ssh": { ... },
            "spf": { ... }
        }
    },
    "requestId": "3bb52d4d22.1615325829.4246.150888"
}

Znaczenie poszczególnych pozycji w odpowiedzi:

PozycjaZnaczenie
IDID domeny
namenazwa domeny
checkIdID kontroli
typetyp kontroli (ping, http, dns, smtp, …)
periodinterwał testowania (sekundy)
fullTargetnazwa serwera lub nazwa domenowa celu
statusbieżący status kontroli (ok, slow, response_timeout, down, response_error, disabled, …)
statusStampostatnia zmiana statusu (UNIX timestamp)
statusDateostatnia zmiana statusu (format SQL, UTC)
createdStamputworzenie kontroli (UNIX timestamp)
createdDateutworzenie kontroli (format SQL, UTC)
uptime_1duptime za ostatnie 24 godziny (procenty)
errorSeconds_1dczas trwania stanów błędu za ostatnie 24 godziny (sekundy)
avgTime_1dśredni czas odpowiedzi za ostatnie 24 godziny (sekundy)
uptime_7duptime za ostatnie 7 dni (procenty)
errorSeconds_7dczas trwania stanów błędu za ostatnie 7 dni (sekundy)
avgTime_7dśredni czas odpowiedzi za ostatnie 7 dni (sekundy)
uptime_30duptime za ostatnie 30 dni (procenty)
errorSeconds_30dczas trwania stanów błędu za ostatnie 7 dni (sekundy)
avgTime_30dśredni czas odpowiedzi za ostatnie 30 dni (sekundy)
warningsCountliczba aktywnych ostrzeżeń

Statusy mogą być:

StatusZnaczenie
unknowntest jeszcze się nie odbył
okwszystko jest w porządku
slowodpowiedź była poprawna, ale wolna
response_timeoutnawiązanie połączenia było poprawne, ale podczas oczekiwania na odpowiedź upłynął czas
downpołączenie się nie powiodło
response_errorbłędna odpowiedź
maintenanceprzy kontroli trwa właśnie planowana przerwa
pausedkontrola jest wstrzymana, testy nie są wykonywane
disabledkontrola została wyłączona przez administratora
deniedmonitoring odmówił wykonania testu – zwykle oznacza to, że próbujesz łączyć się z adresem IP w zakresie prywatnym
invalidStatusinny błędny status monitorowanej usługi

Szczegóły kontroli

Jeśli chcesz zobaczyć jeszcze bardziej szczegółowe informacje o konkretnej kontroli konkretnej domeny, dostępna jest metoda check. Do URL dodaj ID kontroli, np.:

GET https://api.wedos.online/mon/check/5178

Przykład odpowiedzi

{
    "check": {
        "ID": 5178,
        "name": "example.com DNSSEC",
        "type": "dnssec",
        "period": 600,
        "fullTarget": "example.com",
        "status": "ok",
        "statusStamp": 1612886736,
        "statusDate": "2021-02-09 16:05:36",
        "createdStamp": 1612886708,
        "createdDate": "2021-02-09 16:05:08",
        "uptime_1d": 100,
        "errorSeconds_1d": 0,
        "avgTime_1d": 0,
        "uptime_7d": 100,
        "errorSeconds_7d": 0,
        "avgTime_7d": 0,
        "uptime_30d": 100,
        "errorSeconds_30d": 0,
        "avgTime_30d": 0,
        "warningsCount": 0,
        "lastTestStamp": 1613396132,
        "lastTestDate": "2021-02-15 13:35:32",
        "requestTime": null,
        "info": "example.com/SOA secured by DNSSEC\nSignature expiration: 2021-02-28 16:01:01 UTC",
        "testsCount": 363,
        "errorsCount": 0,
        "pendingErrorsCount": 0,
        "lastErrorBeginStamp": null,
        "ip": null,
        "ptr": null,
        "nextStamp": 1613396731,
        "warnings": []
    },
    "requestId": "3bb52d4d22.1613396687.4247.82403"
}

Znaczenie dodatkowych pozycji w odpowiedzi:

PozycjaZnaczenie
lastTestStampostatni test (UNIX timestamp)
lastTestDateostatni test (format SQL, UTC)
requestTimeczas odpowiedzi w ostatnim teście (ms), jeśli dostępny
infododatkowe informacje (komunikat błędu, szczegół odpowiedzi)
testsCountłączna liczba wykonanych testów od początku
errorsCountłączna liczba błędów od początku
pendingErrorsCountliczba błędów w ramach bieżącego stanu błędu
lastErrorBeginStamppoczątek bieżącego stanu błędu (UNIX timestamp)
ipadres IP celu (jeśli dostępny)
ptrrekord odwrotny celu (PTR) (jeśli dostępny)
nextStampprzybliżony czas następnego testu (UNIX timestamp)
warningslista dodatkowych ostrzeżeń (zbliżające się wygaśnięcie certyfikatu, IP na blocklistach, mniej poważne błędy w odpowiedzi itp.)

Wdroż to w swojej infrastrukturze.

Załóż konto, dodaj kontrolę i wygeneruj klucz API w kilka minut.

Zacznij za darmo