FreecoNet API 2.0

Transkrypt

FreecoNet API 2.0
FreecoNet RestAPI
ver.2.04.01
Autorzy:
M.Szymański, M.Rutkowski, Ł.Umbras-Nichnerowicz
Data: 2009-7-22
Strona 1 z 47
SPIS TREŚCI
1 HISTORIA ZMIAN..................................................................................3
2 WSTĘP.......................................................................................................5
3 OPIS UŻYCIA API...................................................................................5
3.1 SKŁADNIA WYWOŁANIA FUNKCJI Z API.........................................................................................................................................6
3.2 UWIERZYTELNIANIE...................................................................................................................................................................6
3.2.1 Metoda oparta o token.................................................................................................................................................7
3.2.2 Metoda oparta o szyfrowanie parametrów żądania.....................................................................................................9
3.2.2.1 Przykład użycia szyfrowania..................................................................................................................................................9
3.2.2.2 Generowanie wartości do pola encData................................................................................................................................13
3.2.3 Porównanie metod autoryzacji...................................................................................................................................16
3.2.3.1 Metoda oparta o token..........................................................................................................................................................16
3.2.3.2 Metoda oparta o szyfrowanie parametrów żądania...............................................................................................................16
3.3 OBSŁUGA BŁĘDÓW...................................................................................................................................................................17
4 OPIS FUNKCJI API.................................................................................18
4.1 FUNKCJE WSPÓLNE DLA API USER, API PARTNER, API CRM.....................................................................................................18
4.1.1 getToken......................................................................................................................................................................18
4.1.2 checkToken..................................................................................................................................................................19
4.1.3 encryptPGP ...............................................................................................................................................................20
4.1.4 invalidateToken...........................................................................................................................................................20
4.1.5 getVersion .................................................................................................................................................................21
4.1.6 uploadFile ................................................................................................................................................................22
4.1.7 deleteFile ..................................................................................................................................................................22
4.2 FUNKCJE MODUŁU API USER...................................................................................................................................................23
4.2.1 getGroupFinAccountInfo............................................................................................................................................23
4.2.2 makeCall.....................................................................................................................................................................24
4.2.3 getBillingCount ..........................................................................................................................................................25
4.2.4 getBilling ...................................................................................................................................................................27
4.2.5 sendFax......................................................................................................................................................................30
4.2.6 getFaxCurrentCount...................................................................................................................................................30
4.2.7 getFaxSentCount........................................................................................................................................................31
4.2.8 getFaxReceivedCount.................................................................................................................................................32
4.2.9 getFaxSent..................................................................................................................................................................33
4.2.10 getFaxReceived .......................................................................................................................................................35
4.2.11 getFaxCurrent .........................................................................................................................................................36
4.2.12 StartMassDial..........................................................................................................................................................38
4.2.13 getMassDialCurrentCount......................................................................................................................................39
4.2.14 getMassDialCalledCount........................................................................................................................................40
4.2.15 getMassDialCurrent................................................................................................................................................41
4.2.16 cancelMassDialCurrent...........................................................................................................................................42
4.2.17 getMassDialCalled..................................................................................................................................................43
4.2.18 deleteMassDialCalled.............................................................................................................................................45
4.2.19 restartMassDialCalled............................................................................................................................................46
4.2.20 getRegistrationStatus................................................................................................................................................47
5 OPŁATY....................................................................................................47
Strona 2 z 47
1 Historia zmian
Data
2008-11-07
2008-11-18
2008-11-22
2008-12-10
Wersja
dokumentu
1.00.00
1.01.00
1.01.01
1.01.02
2008-12-10
1.01.03
2008-12-19
2009-02-24
1.01.04
2.00.00
2009-06-22
2.01.00
2009-06-23
2.02.00
2009-06-23
2.03.00
2009-07-02
2.03.01
2009-07-08
2.04.00
2009-07-22
2.04.01
Opis
Pierwsza oficjalna wersja dokumentu
Dodanie funkcji invalidToken
Drobne poprawki treści
Dodanie informacji, że checkToken nie zmniejsza licznika użyć
tokena.
Dodanie funkcji getVersion. Zmiana numeracji wersji API z wersji
platformy na wersje API
Drobne poprawki w opisie szyfrowania
• Wartości w odpowiedzi umieszczane są w elementach a nie
atrybutach XML
• Wprowadzenie w wiadomości zwrotnej (XML) sekcji
nazwy funkcji. Sekcja <errors> może znajdować się w
sekcji <nazwa funkcji> albo poza tą sekcją.
• Rozdział API na moduł Partner/User/CRM
• funkcja makeCall umożliwia zestawienie połączenia
między dwoma numerami bez używania usługi 'Zestaw
połączenie'. Uproszczone wywołanie usługi nie pozwala na
używanie zaawansowanych funkcjonalności usługi 'Zestaw
połączenie' takich jak białe/czarne list numerów czy maski
czasowe.
• Funkcje do obsługi wirtualnego faksu
• Funkcje obsługi MassDial
• getVersion - zmiana nazwy parametrów wejściowych
• authSystem – nowe pole określające na jaki system
przebiega uwierzytelnianie.
• Usunięcie parametru userDomain z żądań. Parametr ten
jest ustawiany automatycznie na podstawie adresu URL
• Funkcja getToken zwraca błąd invalidCredentialsw
przypadku błędnych danych uwierzytelniających
Dodanie możliwości pobrania kolumny z identyfikatorem kampanii
MassDial (batchId) dla funkcji getMassDialCurrent oraz
getMassDialCalled
Dodanie do funkcji startMassDial kodu błędu
invalidPresentationNum
Dodanie do funkcji sendFax / startMassDial parametru
campaignName
Poprawienie w dokumentacji opisu parametrów TRUE/FALSE.
Zamiana na true/false.
Dodanie błędu functionCallLimitsExceeded, dodanie możliwości
pobrania kolumny z identyfikatorem kampanii wysyłki faksu
(batchId) dla funkcji getFaxCurrent oraz getFaxSent
Poprawka parametru authSystem dla wszystkich funkcji
faksowych, usunięcie parametru fromNum z funkcji getFaxSent
oraz getFaxCurrent, aktualizacja parametrów orderBy w funkcji
getFaxReceived
2 Wstęp
Przedstawione w poniższym dokumencie API pozwala na integrację zewnętrznych systemów
informatycznych z platformą FreecoNet. Możliwości użycia API są nieograniczone, przykładem
może być wbudowanie funkcjonalności nawiązywania połączeń telefonicznych na stronach systemu
CRM, czy też w portalach społecznościowych, możliwość wyświetlenia stanu konta w aplikacji
standalone czy toolbarze w przeglądarce, czy też pobranie spisu połączeń do systemu kontroli
połączeń.
Aktualna wersja dokumentu opisuje wyłącznie FreecoNet RestAPI ver.2.x oparte o wymianę
parametrów poprzez popularny mechanizm REST (Representional State Transfer http://en.wikipedia.org/wiki/Representational_State_Transfer) bazujący na żądaniach HTTPS
GET/POST. Użycie REST pozwala użyć API z każdego języka programowania, który posiada
obsługę HTTPS między innymi PHP, Java, JavaScript czy ActionScript jak również z każdego
systemu operacyjnego.
API zostało podzielone na trzy moduły:
•
moduł partnerski (API Partner) – udostępniający funkcjonalność panelu partnerskiego
•
moduł użytkownika (API User) – udostępniający funkcjonalność panelu użytkownika,
•
moduł CRM (API CRM) – udostępniający funkcjonalność panelu CRM platformy
Należy zaznaczyć, że obecna wersja API ulega ciągłej rozbudowie, osoby chcące skorzystać z API
modułu partnerskiego i użytkownika w systemach produkcyjnych proszone są o zapoznanie się z
najnowszą dokumentacją dostępną pod adresem http://techblog.freeconet.pl/. Dokumentacja funkcji
modułu CRM dostępna jest wyłącznie dla firm używających systemu Carrier-eX .
3 Opis użycia API
Jak już zostało wspomniane we wstępie komunikacja między klientem a platformą FreecoNet
oparta jest o REST, czyli o standardowy mechanizm żądań HTTP. W zależności od potrzeby można
użyć metodę GET albo POST obie metody są obsługiwane po stronie serwera w ten sam sposób i
zapewniają taki sam stopień bezpieczeństwa przesyłania danych.
Poniżej przykład, który pozwoli na szybkie zaznajomienie się z metodą korzystania z API.
Jednym z prostszych przykładów użycia API modułu użytkownika jest wywołanie funkcji
pobierającej stan konta. Poniżej przykład takiego wywołania w oparciu o żądanie GET
wywoływany dla konta demonstracyjnego o loginie apidemo.
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getGroupFinAccountInfo&tokenStr=815aa4d11b51ffc09b251da76a7bac81283a002442
ac64efc03162922838fb51&sig=86cee83a1d14bf7eb8c7b5f6e94a7dd4
W odpowiedzi klient otrzymuje XML w postaci:
<?xml version=”1.0”?>
<response>
<getGroupFinAccount>
<credit>0</credit>
<debit>0</debit>
<creditLimit>0</creditLimit>
<minusCreditDate></minusCreditDate>
</getGroupFinAccount>
</response>
5 z 47
Analizując XML widzimy, że stan konta, kwota należności i limit dla grupy to 0zł. Kwota inna niż
0 złotych dla należności i limitu występują tylko dla grup, które rozliczają się z FreecoNet w
oparciu o postpaid. Jako, że w odpowiedzi nie wystąpił tag <errors> oznacza, że operacja
przebiegła pomyślnie.
Jak widać wywołanie funkcjonalności z FreecoNet RestAPI jak również interpretacja wyników nie
jest skomplikowane i nie sprawia problemu osobie z podstawową znajomością zagadnień
technologii internetowych.
Wymagania
Jedynym wymogiem jest to żeby wybrany język umożliwiał generacje żądań GET albo POST po
protokole HTTPS.
API uwierzytelnia żądania korzystając z kont użytkownika systemu FreecoNet, tak więc należy
posiadać przynajmniej jedno konto w serwisie FreecoNet, osoby które takiego konta nie posiadają
mogą go założyć poprzez stronę https://wizard.freeconet.pl.
3.1 Składnia wywołania funkcji z API
W celu wywołania funkcji z API należy stworzyć URL składający się z paru obowiązkowych
części.
https://apiuser.freeconet.pl/RestAPI/V2/execute?encData=23ffsdf..
1
2
3
4
5
Gdzie:
1 - komunikacja odbywa się po szyfrowanym protokole HTTPS
2 –część URL, adres pod którym umieszczone jest API.
3 - część URL, pod którą umieszczone są zasoby FreecoNet RestAPI. Dla wszystkich funkcji
zaprezentowanych w tym dokumencie ta część przyjmuje wartość RestAPI
4 – część definiująca wersję API, z której chcemy skorzystać
5 – parametry wywoływanej funkcji
Adresy dla modułów są następujące:
https://apiuser.freeconet.pl - dla modułu użytkowania panelu
https://apipartner.freeconet.pl - dla modułu partnera
https://apicrm.freeconet.pl - dla modułu CRM
3.2 Uwierzytelnianie
W celu upewnienia się, że funkcje serwisu będą wywoływane przez uprawnione osoby/systemy,
zostały wprowadzone dwie metody uwierzytelniania, pierwsza oparta o token wystawiany przez
system i podpis, druga oparta o zaszyfrowanie wybranych parametrów żądania. Przy
uwierzytelnianiu w module użytkownika (API User) należy podać system w którym chcemy się
uwierzytelnić , podajemy to w parametrze authSystem.
Do wyboru mamy systemy:
• USER – użytkownik panelu FreecoNet
• FAXV – użytkownik panelu faksów
• MASD – użytkownik panelu MassDial
Jeśli parametr nie jest podany w żądaniu, domyślnie przyjmowana jest wartość USER.
6 z 47
3.2.1 Metoda oparta o token
W tej metodzie uwierzytelniania przed wykonaniem właściwej operacji system kliencki musi
pobrać token. Czas ważności tokenu ustalany jest poprzez podanie wartości w parametrze
validPeriod. Każdorazowe użycie tokena w wywoływanych funkcjach przedłuża ważność
tokena o początkowo podaną wartość.
Pobranie tokena realizowane jest za pomocą funkcji getToken. Poniżej przykład pobrania tokena
dla konta apidemo dla którego ustawione jest hasło apidemo.
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getToken&userName=apidemo&password=apidemo&authSystem=USER&validPeriod=100
00
Gdzie:
fun – wywołujemy funkcje pobierającą token
userName – to login konta przez które się logujemy do systemu (poprzez te konto będą
realizowane wszystkie operacje np. dzwonienie)
password – hasło dla konta. Jest to te samo hasło które użytkownik używa do logowania się do
panelu
authSystem – identyfikator systemu w którym chcemy się uwierzytelnić. Dopuszczalne wartości
dla modułu użytkownika (API User) to USER (użytkownika panelu FreecoNet), FAXV –
użytkownik panelu faksów, MASD – użytkownik panelu MassDial. Jeśli parametr nie jest podany w
żądaniu, domyślnie przyjmowana jest wartość USER. Dla modułu partnerskiego i CRM parametru
authSystem nie trzeba ustawiać – domyślnie przybiera wartość PARTNER i CRM. Dla systemów
MassDial i Faks należy odpowiednio rejestrować się na system MASD oraz FAXV, w przeciwnym
przypadku użytkownik otrzyma komunikat błędu.
validPeriod – czas ważności tokenu w sekundach, wartość domyślna to 10s
W przypadku udanego uwierzytelniania otrzymujemy XML w postaci
<?xml version=”1.0”?>
<response>
<getToken>
<tokenStr>815aa4d11b51ffc09b251da76a7bac81283a002442ac64efc03162922838fb51
</tokenStr>
</getToken>
</response>
Oczywiście wartość pola tokenStr będzie inna przy każdym wywołaniu funkcji getToken. Dla
celów demonstracyjnych przedstawiono token, który będzie używany w dalszej części dokumentu i
którego ważność nie wygasa, tak więc każdy użytkownik może go użyć we własnych testach.
Jeśli operacja nie przebiegnie pomyślnie np. źle podane hasło w sekcji <response> pojawi się
sekcja <errors> (dokładny opis zwracanych wartości umieszczony jest w rozdziale - 3.3 Obsługa
błędów ) np.
<response>
<getGroupFinAccountInfo>
<errors>
<error>
7 z 47
<code>invalidToken</code>
<msg>Token expired or is invalid</msg>
</error>
</errors>
</getGroupFinAccountInfo>
</response>
Mając token możemy stworzyć URL wywołujący określoną funkcjonalność systemu. Załóżmy, że
chcemy pobrać stan konta dla grupy do której należy konto apidemo . W tym celu tworzymy URL.
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getGroupFinAccountInfo&tokenStr=815aa4d11b51ffc09b251da76a7bac81283a002442
ac64efc03162922838fb51&sig=86cee83a1d14bf7eb8c7b5f6e94a7dd4
Należy zwrócić uwagę na ostatnią część w URL:
sig=86cee83a1d14bf7eb8c7b5f6e94a7dd4
Jest to podpis przesyłanej wiadomości, który zabezpiecza przed nieautoryzowaną zmianą wartości
żądania.
Podpis
ten
tworzymy
poprzez
policzenie
funkcji
skrótu
MD5
(http://pl.wikipedia.org/wiki/MD5) z ciągu znaków utworzonego z nazwy wywoływanej funkcji,
nazw atrybutów, wartości atrybutów (nie enkodowanych) oraz wartości MD5 z hasła dla konta
(podawane jest MD5 z hasła a nie samo hasło ponieważ w systemie FreecoNet przechowywane jest
hasło w postaci skrótu MD5). MD5 z hasła musi być dodane do końca ciągu dla którego obliczamy
MD5. Kolejność atrybutów/wartości musi być taka sama jak w przesyłanym URL. Przy liczeniu
MD5 nie bierzemy po uwagę atrybutu sig. W naszym przypadku obliczanie podpis będzie
wyglądało następująco (oryginalna wartość hasła to ‘apidemo’):
MD5(‘fungetGroupFinAccountInfotokenStr815aa4d11b51ffc09b251da76a7bac81283a0024
42ac64efc03162922838fb51953a3220084d73ea9948e3046c3c242d’)=
86cee83a1d14bf7eb8c7b5f6e94a7dd4
Pogrubioną czcionką zaznaczone MD5 hasła:
MD5(‘apidemo’)="953a3220084d73ea9948e3046c3c242d"
Uwaga w przypadku przesyłania danych za pomocą GET i równocześnie w POST, do obliczenia
MD5 w tworzonym ciągu podajemy najpierw parametry GET a później z POST.
Podpis ten zabezpiecza nas przed nieautoryzowaną modyfikacją przesyłanych parametrów. Ma to
szczególne znaczenie gdy tworzony URL jest dostępny na stronie WWW wyświetlanej
użytkownikowi końcowemu. Jeśli użytkownik dokona zmian w URL taka zmiana zostanie wykryta
przez funkcje serwisu i operacja nie zostanie wykonana.
UWAGA
Jeśli nazwa atrybutu w przesyłanym żądaniu rozpoczyna się od NS oznacza to, że dany atrybut
jak też jego wartość nie jest brana pod uwagę przy liczeniu podpisu. Jeśli w żądaniu pojawi się
ten sam parametr z i bez NS funkcja zwróci błąd a pole <error> <code> przyjmie wartość
DuplicatedParams . Użycie przedrostku NS pozwala na ustawianie wybranych parametrów
bez obliczania MD5 co ma znaczenie np. w przypadku tworzenia URL po stronie klienta..
W wyniku prawidłowego działania funkcji dostaniemy XML w postaci:
8 z 47
<?xml version=”1.0”?>
<response>
<getGroupFinAccountInfo>
<credit>0</credit>
<debit>0</debit>
<creditLimit>0</creditLimit>
<minusCreditDate></minusCreditDate>
</getGroupFinAccountInfo>
</response>
W wyniku tej operacji ważność tokena ustawiana jest na kolejne 10000 sekund.
3.2.2 Metoda oparta o szyfrowanie parametrów żądania
W tej metodzie nie ma oddzielnego etapu autoryzacji użytkownika, co implikuje że po stronie
serwera nie ma sesji i nie ma możliwości przechowywania wartości w sesji, tak więc przy każdym
wywołaniu musimy przesłać informacje niezbędne do autoryzacji czyli nazwę użytkownika, hasło
dodatkowo ze względów bezpieczeństwa musi być zaszyfrowany identyfikator wywoływanej
funkcji. Wywołanie określonej funkcji z API w najprostszym scenariuszu wymaga jedynie
wywołania URL który jest niezmienny w czasie (oczywiście o ile nie ulegnie zmianie hasło konta),
tak więc można np. taki URL umieścić w emailu albo na statycznej stronie HTML. W przypadku tej
metody nie używamy pola sig czyli podpisywania żądania.
Użycie tej metody najlepiej zaprezentować na przykładzie użycia usługi ’Zestaw Połączenie’.
Usługa ta pozwala na zainicjowanie połączenia między dwoma stronami (np. numerami) poprzez
wysłanie żądania do systemu FreecoNet.
3.2.2.1 Przykład użycia szyfrowania
Załóżmy, że mamy stronę WWW Biura Obsługi Klienta na której jest pole ‘Mój numer’, w którym
można wpisać własny numer i obok pola jest przycisk ‘Rozmowa z konsultantem’. Wpisanie
numeru a później naciśnięcie na przycisk ma spowodować zestawienie połączenia miedzy
telefonem którego numer wpisaliśmy a numerem BOK. Załóżmy, że numer biura obsługi to
0587311999 (w systemie FreecoNet jest to numer demonstrujący działanie usług IVR) a wpisany
numer to 0895277082 (dla testów proponujemy podać swój numer FreecoNet), połączenie ma
zostać zestawione przez konto apidemo , dla którego hasło jest apidemo.
W celu zestawienia takiego połączenia należy w pierwszej kolejności załączyć usługę w panelu
użytkownika (‘KonfiguracjaUsługiDodaj nową usługę’ i wybrać usługę ‘Zestaw połączenie’) i
ustawić jak na poniższym ekranie:
9 z 47
Samo zainicjowanie połączenia następuje po wysłaniu do serwera następujące żądania1
1
2
https://apiuser.freeconet.pl/RestAPI/V2/execute?encData=wcBOA%2F%2FH0yB8UNK7EAP
%2BJtHxfQRr5CYUnCIk4ce4%2FvS%2BVGy6TIucIECuANCV6Z0VfHe%2FSmX%2BJXxx
%0AH504CscfT6SzJVsZmqHVjujsTBl8vZlUc%2F4J1gX6CSSsli67hEFeEOtpYKDbvcI9h5S4uFAppHSS
%0AR0aQkU3QDBNu1dcI49KwUdYse1XDsTwioU6prqQEAIbFfwmh6rxlupMRdtWnsih94N987AbQvhti
%0AoBUk212NHQvdLUa6em2dmd%2BE5S0j5lfFv5WWepJkueG5yoUpi
%2Bg0E9hMck235fJvP755oe7sjzN6%0AA6zv%2BSvipADULgKh7fAjUCwTX6Xoz%2BkHVEiarctV
%2BVKuuE5oO3HABRpTpIrL0pIBA6%2BqotlrXmY%2F%0ANzeRRTgHQGm0oy2Yl%2BW3Mzql7jIJyjj
%2Fs9DIKFVKDZfttoR03lFvQTDTXe0nvbdw4Ohi5uQChVma%0AyNjJCK3zP7nvC9I2sG5vmrsATgb
%2Ff2DJKhcrfPXJt9GBPoSPqPP6v4x0v7YazQKQP%2Fiznm90PQzU%0A%2BgmUpmXltDDSg3%2BmfaSa1N
%2BOdof3BQ%3D%3D%0A%3DPeia&from=0895277082
3
Gdzie:
1 – standardowy adres API User
2 – zaszyfrowany login, hasło konta, które zostanie obciążone kosztami rozmowy i z którego
1
Ze względu, że na koncie testowym jest zerowy stan konta można jedynie podać numer z FreecoNet.
10 z 47
zostanie zestawione połączenie, id serwisu, typ strony Od i ‘numer Do’
3 - numer telefonu wpisany na stronie
Dla uproszenia generacji URL dla tej metody autoryzacji korzystamy z pomocniczego ekranu do
generacji kontrolki usługi ‘Zestaw połączenie’. W tym celu wybieramy w panelu użytkownika
ekran KonfiguracjaUsługi i wybieramy zdefiniowaną usługę ‘Zestaw połączenie’ i przechodzimy
do zakładki ‘kontrolka’. Wpisujemy ustawienia jak na ekranie poniżej:
Po wprowadzeniu danych naciskamy przycisk ‘Generuj’. W wygenerowanym kodzie HTML
11 z 47
odszukujemy sekcje zaczynającą się od https, na zamieszczonym powyżej ekranie zaznaczono na
czerwono interesującą nas sekcje.
Ze względów bezpieczeństwa należy szyfrować te dane które nie mogą się pojawić jawnym tekstem
w żądaniu oraz które nie powinny być zmienione przez użytkownika, parametry takie jak nazwa
konta, domena, hasło i funkcja muszą zawsze być podawane w części szyfrowanej .
Dla naszego przykładu link zawiera następujące dane:
Nazwa pola
Funkcja (fun)
Nazwa konta (userName)
Hasło (password)
Wartość
makeCall
apidemo
apidemo
Zaszyfrowane
TAK
TAK
TAK
System autoryzacji
(authSystem)
USER
TAK
Id usługi (idService)
543452
TAK
Numer do (to)
Typ strony Do (toType)
Typ strony Od
(fromType)
0587311999
N
N
TAK
TAK
TAK
Uwagi
Należy wpisać hasło dla podanego
wyżej użytkownika
Moduł autoryzacji. Jeśli ten
parametr nie zostanie podany
przyjmowana jest wartość USER
Id usługi. Wyświetlane w zakładce
‘konfiguruj’ poniżej nazwy usługi.
Numer BOK na który dzwonimy
Podany może być jedynie numer
Podany może być jedynie numer
Interesujący nas URL jest w postaci:
https://apiuser.freeconet.pl/RestAPI/V2/execute?encData=wcBOA%2F
%2FH0yB8UNK7EAP%2BJtHxfQRr5CYUnCIk4ce4%2FvS%2BVGy6TIucIECuANCV6Z0VfHe%2FSmX
%2BJXxx%0AH504CscfT6SzJVsZmqHVjujsTBl8vZlUc
%2F4J1gX6CSSsli67hEFeEOtpYKDbvcI9h5S4uFAppHSS
%0AR0aQkU3QDBNu1dcI49KwUdYse1XDsTwioU6prqQEAIbFfwmh6rxlupMRdtWnsih94N987AbQvht
i%0AoBUk212NHQvdLUa6em2dmd%2BE5S0j5lfFv5WWepJkueG5yoUpi
%2Bg0E9hMck235fJvP755oe7sjzN6%0AA6zv%2BSvipADULgKh7fAjUCwTX6Xoz%2BkHVEiarctV
%2BVKuuE5oO3HABRpTpIrL0pIBA6%2BqotlrXmY%2F%0ANzeRRTgHQGm0oy2Yl%2BW3Mzql7jIJyjj
%2Fs9DIKFVKDZfttoR03lFvQTDTXe0nvbdw4Ohi5uQChVma%0AyNjJCK3zP7nvC9I2sG5vmrsATgb
%2Ff2DJKhcrfPXJt9GBPoSPqPP6v4x0v7YazQKQP%2Fiznm90PQzU%0A
%2BgmUpmXltDDSg3%2BmfaSa1N%2BOdof3BQ%3D%3D%0A%3DPeia&from=
Tak wygenerowany URL możemy wkleić bezpośrednio do pola adresu w przeglądarce jedynie co
należy zrobić to dodać do URL’a cześć w której definiujemy numer Od. Cały URL z dodaną częścią
będzie wyglądał następująco (dodana część została oznaczona na czerwono)
https://apiuser.freeconet.pl/RestAPI/V2/execute?encData=wcBOA%2F
%2FH0yB8UNK7EAP%2BJtHxfQRr5CYUnCIk4ce4%2FvS%2BVGy6TIucIECuANCV6Z0VfHe%2FSmX
%2BJXxx%0AH504CscfT6SzJVsZmqHVjujsTBl8vZlUc
%2F4J1gX6CSSsli67hEFeEOtpYKDbvcI9h5S4uFAppHSS
%0AR0aQkU3QDBNu1dcI49KwUdYse1XDsTwioU6prqQEAIbFfwmh6rxlupMRdtWnsih94N987AbQvht
i%0AoBUk212NHQvdLUa6em2dmd%2BE5S0j5lfFv5WWepJkueG5yoUpi
%2Bg0E9hMck235fJvP755oe7sjzN6%0AA6zv%2BSvipADULgKh7fAjUCwTX6Xoz%2BkHVEiarctV
%2BVKuuE5oO3HABRpTpIrL0pIBA6%2BqotlrXmY%2F%0ANzeRRTgHQGm0oy2Yl%2BW3Mzql7jIJyjj
%2Fs9DIKFVKDZfttoR03lFvQTDTXe0nvbdw4Ohi5uQChVma%0AyNjJCK3zP7nvC9I2sG5vmrsATgb
%2Ff2DJKhcrfPXJt9GBPoSPqPP6v4x0v7YazQKQP%2Fiznm90PQzU%0A
%2BgmUpmXltDDSg3%2BmfaSa1N%2BOdof3BQ%3D%3D%0A%3DPeia&from=0895277082
Dla typowej sytuacji możemy skorzystać z całego kodu kontrolki wygenerowanego na stronie.
12 z 47
3.2.2.2 Generowanie wartości do pola encData
W poprzednim rozdziale została przedstawiona metoda generowania zaszyfrowanego linku z
użyciem strony do generacji kontrolek dla usługi ‘Zestaw połączenie’. Poniżej zostanie
zaprezentowany opis jak samodzielnie przygotować zawartość pola encData.
Przy przygotowaniu wartości pola encData skorzystaliśmy z popularnego programu do
szyfrowania GnuPg ale oczywiście można użyć ogólnie dostępne biblioteki szyrowania PGP. Warto
zaznaczyć, że do szyfrowania można użyć również funkcji encryptPGP dostępnej w Rest API –
rozdział 4.1.3.
W RestAPI używana jest metody szyfrowania DSA/Elgamal z 1024 bitowym kluczem publicznym
(więcej o DSA/Elgamal i o asymetrycznym szyfrowaniu na stronie
http://pl.wikipedia.org/wiki/Kryptografia_asymetryczna ).
Poniżej klucz publiczny dla Rest API podany w formacie programu GnuPg (http://www.gnupg.org/)
:
-----BEGIN PGP PUBLIC KEY BLOCK----Version: GnuPG v1.4.9 (MingW32)
mQGiBEiN2BARBACiu8YcoZ0fg1/twKRSifKAii0jAPyCKWBCKlTa3F+HAVe4jUHm
8/ZdPauS7a0+AkN/YqiALwM3wJyyCGwWKJPkdGtrjPnWsVIO4jRS0OGDjkHEFUIj
0+TeZk1sU6Hj/HhFtTkapObbUx1P6+8pYEWQoAiZHXv+5f9x1+GMppoeEwCghctl
lkN+mgrj02fpIdLj6JMbl2EEAJAQLc9wlAic6sN5ibhqEtF03hAQRRUuvEiklwKq
anwxfxwEGOBee7vEaxA6B6bDZsTPzkZbKBfBbvd+KH/6j1alltFSL7HjNILEFqsh
9rZxUyFT1GmEdjA0NsQgW3CppEv43crWEK4NibxfLrbkNKwms442zUT3mdL5KUnR
7wfbA/9i7rFPNDcsWi7O+KlNhiIK6X44ogRXkvtKvsHiqTbyhUG8uoyWXG3Y+teD
DSg6RBit/RnLUbO0p0l7shWOv8SZx8Z4xuw5sQVsXFyXPiliYm93WJgpnqHe/jtp
mOyTzMLZk8IeTRxfIAkvBv9O8SvxGTk1Gy7nwxXemgiMV/efjrRJRnJlZWNvbmV0
IFJlc3RBUEkgKEZyZWVjb25ldCBSZXN0QVBJIERFUy9FbGdhbWFsIGtleXMpIDxh
cGlAZnJlZWNvbmV0LnBsPohgBBMRAgAgBQJIjdgQAhsDBgsJCAcDAgQVAggDBBYC
AwECHgECF4AACgkQIix00gUvRyi53QCcD+2vbU9wSTmLSK3IAmt/tEoB/OcAn0FZ
zuoaD8XyNYgbgr51ULE7tXYiuQENBEiN2BAQBACa6OT1G/UNiK4v2eyWqDNG/lSU
3+2wwvUSYKQ6dXYPxc87BZDuLiJjjgkSU7ovqu+Hz/xdAluxhZ8A44/lnhdniyE0
x8aHWXOvBfAnEDEjoYP5xU8i30ohs5cymr3l+FS4PPongyVoSN134cBMpYZW8fyn
XjdvyVFoZ3QCnx1gpwADBQP9FAJgDhgOSs4W/3XV463epf+eiruv5L8qqn1S4CQw
Ci49U3ce9KmNk+NjKVFDD0WLsDYN4+2wKviSGl/bbMmhZOpH/h2dLqhaWYDcX+jV
sh3rYuHb5Oc1gdSrNgTfGGGBZX5/lzDq3kdBc3uWL6V0vf4mIzNoQdBt63fwwsa8
RtSISQQYEQIACQUCSI3YEAIbDAAKCRAiLHTSBS9HKEp7AJ9RidMYO4WJ43N2RMP2
iVtrKXVqdQCeJpf+bNYSFLxZD8AmZ0La+1iCvcw=
=mDNs
-----END PGP PUBLIC KEY BLOCK-----
Klucz ten można również pobrać ze strony :
https://apiuser.freeconet.pl/certificates/RestAPI_public_key_api.gpg
W celu przygotowania pełnego URL’a z wywołaniem należy:
•
pobrać i zainstalować program GnuPg (http://www.gnupg.org/).
•
•
Utworzyć plik RestAPI_public_key_api.gpg i wkleić podany powyżej klucz publiczny.
Dodać klucz publiczny do repozytorium kluczy (tzw.keyring). Pobranie i dodanie klucza
wykonujemy tylko raz po zainstalowaniu GnuPg.
13 z 47
gpg –-import RestAPI_public_key_api.gpg
•
Utworzyć ciąg tekstowy który chcemy zaszyfrować w postaci:
nazwa parametru =warto ść parametru&nazwa parametru=warto ść ...
w naszym przypadku:
fun=makeCall&userName=apidemo&password=apidemo&idService=543452&to=0587311999&
toType=N&fromType=N
Uwaga!!!
Należy zwrócić uwagę, że znaki specjalne dla wartości parametrów muszą być enkodowane tak
jak
to
się
dzieje
gdy
są
zamieszczane
w
URL
(http://www.albionresearch.com/misc/urlencode.php). W poniższych przykładach zastosowano
kodowanie zgodne z RFC1738 (http://www.faqs.org/rfcs/rfc1738) z tą różnicą, że znaki spacji są
kodowane jako znak plusa (+). Inne wartości poza wartościami nie powinny być enkodowane.
W naszym przypadku wartości po enkodowaniu wartości z URLa wyglądają tak samo:
fun=makeCall&userName=apidemo&password=apidemo&idService=543452&to=0587311999&
toType=N&fromType=N
•
Uzyskany tekst zapisujemy w pliku makecall_test.txt i dokonujemy szyfrowania:
gpg –a –-encrypt makecall_test.txt
Poniżej zapis sesji szyfrowania:
C:\Program Files\GNU\GnuPG>gpg -a -e makecall_test.txt
You did not specify a user ID. (you may use "-r")
Current recipients:
Enter the user ID. End with an empty line: [email protected]
gpg: 7C50D2BB: There is no assurance this key belongs to the named user
pub 1024g/7C50D2BB 2008-07-28 FreecoNet RestAPI (FreecoNet RestAPI
DES/Elgamal
keys) <[email protected]>
Primary key fingerprint: 00EF A738 7244 3D7C DE6C 7EAF 222C 74D2 052F 4728
Subkey fingerprint: 63B6 4527 79D2 C479 10E0 32B0 FFC7 D320 7C50 D2BB
It is NOT certain that the key belongs to the person named
in the user ID. If you *really* know what you are doing,
you may answer the next question with yes.
Use this key anyway? (y/N) y
Current recipients:
1024g/7C50D2BB 2008-07-28 "FreecoNet RestAPI (FreecoNet RestAPI DES/Elgamal
keys
) <[email protected]>"
14 z 47
Enter the user ID.
End with an empty line:
C:\Program Files\GNU\GnuPG>
Wynik szyfrowania znajdziemy w pliku makeCall_test.txt.asc:
-----BEGIN PGP MESSAGE----Version: GnuPG v1.4.9 (MingW32)
wcBOA//H0yB8UNK7EAP/RkeYDuYSeANStQi0MadQo5EHkPVNS7uADXkLTYde4Uug7uV6NEzNsnTO
boRQx+48e2lsa4qltYd+RPtfI9TW/JOEhYENwuz1zBTvOw1uX9gUN5gs2yMrOn9anB31wi8i4I0T
UnwfmSczTatc7PTuHUjnH99Zssqcll7NC55LMWkD/0rFdb34/XwoHG20+YDJ9EJ2UDcKiJ1e6I5J
Nmcd3YEElp9xhiS7bV6iYnXpDKi5l7KJKUcTMboGsY7Nvn172/9t88ksb2PyM7JPwa9VQUO6H9Pt
n22VctkBym272lvRDF3nX8BSC8+b5PFlWUKirwYgI+DgTyB1B8Gjsksp4D460pIBQymN5RF8dZp0
8kdozH9izVc98ZRuLFBrS6TtaM5gEj+SritQe3W+2EX7TnwhfrWd68EvQUjFR8XdecpyN/il7ykQ
OY0VXI5nXHqbBxFSLdU/JPYFDTcZiE0FfHpa6bh5ZWQjvSOwFrAIwocOMDcPsMVZOJTKqlha2Xae
nzw5a3hejcdK7dDWZ97CZJ+/PoFO3w==
=bumf
-----END PGP MESSAGE-----
Należy zaznaczyć, że każde wywołanie szyfrowania wygeneruje inną zawartość pliku
makeCall_test.txt.asc co jest sytuacją normalną i wynika ze specyfiki działania
szyfrowania PGP.
•
Z wiadomości wycinamy trzy pierwsze linie jak również ostatnią linie.
•
Następnie należy wykonać URL Encoding (do testów można skorzystać ze strony
http://www.w3schools.com/TAGS/ref_urlencode.asp) na całej zaszyfrowanej wiadomości
Po enkodowaniu dostajemy ciąg:
wcBOA%2F%2FH0yB8UNK7EAP
%2FRkeYDuYSeANStQi0MadQo5EHkPVNS7uADXkLTYde4Uug7uV6NEzNsnTO+boRQx
%2B48e2lsa4qltYd%2BRPtfI9TW
%2FJOEhYENwuz1zBTvOw1uX9gUN5gs2yMrOn9anB31wi8i4I0T+UnwfmSczTatc7PTuHUjnH99Zssq
cll7NC55LMWkD
%2F0rFdb34%2FXwoHG20%2BYDJ9EJ2UDcKiJ1e6I5J+Nmcd3YEElp9xhiS7bV6iYnXpDKi5l7KJKUc
TMboGsY7Nvn172%2F9t88ksb2PyM7JPwa9VQUO6H9Pt+n22VctkBym272lvRDF3nX8BSC8%2Bb5PFl
WUKirwYgI%2BDgTyB1B8Gjsksp4D460pIBQymN5RF8dZp0+8kdozH9izVc98ZRuLFBrS6TtaM5gEj
%2BSritQe3W%2B2EX7TnwhfrWd68EvQUjFR8XdecpyN%2Fil7ykQ+OY0VXI5nXHqbBxFSLdU
%2FJPYFDTcZiE0FfHpa6bh5ZWQjvSOwFrAIwocOMDcPsMVZOJTKqlha2Xae+nzw5a3hejcdK7dDWZ9
7CZJ%2B%2FPoFO3w%3D%3D+%3Dbumf
•
Ostatnim krokiem jest stworzenie pełnego URL’. W naszym przypadku dodajemy jeszcze adres
API oraz parametr, który będzie zmienny czyli from.
https://apiuser.freeconet.pl/RestAPI/V2/execute?encData=wcBOA%2F
%2FH0yB8UNK7EAP
%2FRkeYDuYSeANStQi0MadQo5EHkPVNS7uADXkLTYde4Uug7uV6NEzNsnTO+boRQx
%2B48e2lsa4qltYd%2BRPtfI9TW
%2FJOEhYENwuz1zBTvOw1uX9gUN5gs2yMrOn9anB31wi8i4I0T+UnwfmSczTatc7PTuHUjnH99Zssq
cll7NC55LMWkD
%2F0rFdb34%2FXwoHG20%2BYDJ9EJ2UDcKiJ1e6I5J+Nmcd3YEElp9xhiS7bV6iYnXpDKi5l7KJKUc
TMboGsY7Nvn172%2F9t88ksb2PyM7JPwa9VQUO6H9Pt+n22VctkBym272lvRDF3nX8BSC8%2Bb5PFl
WUKirwYgI%2BDgTyB1B8Gjsksp4D460pIBQymN5RF8dZp0+8kdozH9izVc98ZRuLFBrS6TtaM5gEj
%2BSritQe3W%2B2EX7TnwhfrWd68EvQUjFR8XdecpyN%2Fil7ykQ+OY0VXI5nXHqbBxFSLdU
%2FJPYFDTcZiE0FfHpa6bh5ZWQjvSOwFrAIwocOMDcPsMVZOJTKqlha2Xae+nzw5a3hejcdK7dDWZ9
7CZJ%2B%2FPoFO3w%3D%3D+%3Dbumf&from=0895277082
15 z 47
3.2.3 Porównanie metod autoryzacji
Poniżej zestawienie zalet i wad dwóch wymienionych wyżej metod. Zestawienie pomoże wybrać
najlepsze rozwiązanie dla konkretnego rozwiązania.
3.2.3.1 Metoda oparta o token
•
•
•
•
•
Zalety
Nie trzeba przesyłać loginu i hasła przy każdym wywołaniu funkcji. W przypadku generacji
HTML użytkownik nie widzi identyfikatorów w URL
Duża szybkość tworzenia żądań, jak również duża szybkość obsługi tych żądań po stronie
systemu FreecoNet. Tworzenie wywołań wymaga obliczania funkcji skrótu MD5 dla
wygenerowanego żądania. Obliczanie jest zaimplementowana w większości języków
programowania i wykonywane jest bardzo szybko.
Możliwość użycia tokena w systemach z logowaniem SSO (Single Sign-on
http://en.wikipedia.org/wiki/Single_sign-on ), czyli token może być przekazywany między
różnymi luźno powiązanymi systemami klienta.
Dołączany podpis zabezpiecza przed nieautoryzowaną modyfikacją wywołania
Dynamiczne wygenerowanie żądań np. sprawdzenie stanu kont dla różnych grup wymaga
jedynie użycia funkcji haszującej MD5 przez co jest łatwe do implementacji.
Wady
• Przed wywołaniem funkcji z API trzeba wykonać uwierzytelnianie użytkownika – pobranie
tokena. Przy pobraniu tokena należy podać login i hasło użytkownika.
• Wygenerowany token przy braku aktywności ważny jest określoną ilość sekund, co w
przypadkach długich przerw w interakcji użytkownika z systemem komplikuje obsługę API.
• Brak możliwości ‘osadzania’ wywołań na statycznych stronach HTML.
3.2.3.2 Metoda oparta o szyfrowanie parametrów żądania
•
•
•
•
Zalety
Możliwość osadzenia wywołania funkcji na statycznej stronie HTML, w mailu czy też w
banerze reklamowym.
Nie istnieje problem wygasania ważności tokena.
Możliwość umieszczenia w części zaszyfrowanej parametrów, które nie powinny być
widoczne przez użytkownika. Do szyfrowania parametrów używane jest szyfrowaniem PGP,
które lepiej zabezpiecza niż podpis MD5 jak to ma miejsce w metodzie opartej o token.
W panelu użytkownika istnieje kreator do tworzenia żądań do API dla usługi ‘Zestaw
połączenie’.
Wady
• Zmiana hasła / loginu / funkcji (czy też dołączanie nowych parametrów do części
zaszyfrowanej) w żądaniu wymaga ponownie zaszyfrowania tych parametrów za pomocą
klucza publicznego. Zastosowane w API szyfrowanie PGP jest zdecydowanie bardziej
złożone obliczeniowo niż obliczanie MD5, przez co przygotowanie żądania jak również
wykonanie po stronie serwera jest wolniejsze niż analogiczne wywołanie w metodzie z
tokenem.
• Przy każdym wywołaniu musimy podawać login, hasło i nazwę funkcji (przez podany login
będą wykonywane wywołania).
• Nie dla wszystkich języków programowania istnieją biblioteki szyfrowania PGP.
• URL jest dłuższy niż dla metody opartej o token.
16 z 47
Należy zaznaczyć, że obie metody mogą być używane równocześnie w obrębie jednej aplikacji..
3.3 Obsługa błędów
W przypadkach gdy wystąpi błąd przy realizacji wywoływanej funkcji zwracany jest sekcja
<errors> (w sekcji nazwy funkcji) składająca się z elementów <error> które opisują z jakim
błędem albo błędami mamy do czynienia.
Przykładowa odpowiedź, z informacją o błędzie.
<?xml version=”1.0”?>
<response>
<getToken>
<errors>
<error>
<code>invalidCredentials</code>
<msg>Invalid userName, password or authSystem</msg>
</error>
</errors>
</getToken>
</response>
Przy opisie każdej funkcji zostały wymienione możliwe wartości <code>.
Jeśli pojawi się błąd, który nie można powiązać z wywołaniem funkcji sekcja funkcji w
<response> może nie istnieć np.
<?xml version=”1.0”?>
<response>
<errors>
<error>
<code>indvalidSignature</code>
<msg>Invalid signature</msg>
</error>
</errors>
</response>
Możliwe wartości błędów które mogą się pojawić przy wszystkich wywołaniach funkcji:
•
•
•
•
•
•
•
•
•
•
•
•
duplicatedParams – pojawiły się duplikaty parametrów w żądaniu
invalidToken – token wygasł lub jest błędny
invalidSignature – podpis w komunikacie nie jest zgodny z podpisem obliczonym w
systemie FreecoNet
invalidEncParams – zły format ciągu tekstowego w zaszyfrowanej części
invalidEnc – wystąpił błąd w trakcie deszyfrowanie części encData
invalidEncEncoding – błędne enkodowanie w odszyfrowanym ciągu encData
NSInsideEncData – pojawił się parametr z prefiksem NS w polu encData
noFunInRequest – brak pola Fun w w żądaniu.
invalidAuthType – w parametrach żądaniu użyto jednocześnie pól token oraz
userName lub/i password
valuesToLong – wartości parametrów są za długie
internalServerError – pojawił się błąd operacji. Proszę zgłosić ten błąd do
[email protected]
functionCallLimitsExceeded – pojawiło się za dużo zapytań do API o daną funkcję.
Należy ponowić próbę w późniejszym czasie.
17 z 47
•
•
invalidCredentials – zła kombinacja userName, authSystem, password albo
użytkownik nie ma praw do wykonywania funkcji API
invalidRequest – pozostałe błędy związane z niewłaściwym wywołaniem funkcji
(np.nie podano parametrów wymaganych albo podano za dużo parametrów. Bardziej
szczegółowe wyjaśnienie błędu w <msg>)
4 Opis funkcji API
Uwaga!!!
1) Jeśli w wyniku działania funkcji zwracana jest wartość liczbowa to znakiem oddzielającym
część całkowitą od części dziesiętnej jest znak kropki.
2) Dla wszystkich funkcji w przypadku metody z szyfrowaniem pól trzeba podać parametry
userName, fun i password
3) Wszystkie daty zwracane są w formacie unix'owego znacznika czasu (timestamp), tj. liczba
sekund od 00:00:00 1 stycznia 1970 roku.
4) Wszystkie ciągi tekstowe należy kodować w UTF-8
4.1 Funkcje wspólne dla API User, API Partner, API CRM
4.1.1 getToken
Nazwa
funkcji
Opis
Wejście
getToken
Funkcja autoryzuje użytkownika panelu albo użytkownika usługi i pobiera token z
systemu. W przypadku tej komendy nie jest wymagane podpisanie komunikatu (czyli
nie trzeba dołączać pola sig). Token autoryzacji pobrany w jednym systemie nie
może zostać użyty w innym.
W celu autoryzacji żądania podajemy:
• userName – login użytkownika / serwisu
• password – hasło użytkownika / serwisu
albo poprzedni token
• tokenStr – wcześniej otrzymany token. Użycie tego parametru powoduje
zmniejszenie ilości dopuszczalnych sprawdzeń tokenu dla ‘starego’ tokenu.
Jeśli w tej metodzie uwierzytelniania użyjemy przy wywołaniu funkcji
getToken parametry validPeriod i noAttempts, parametry
noAttempts i validPeriod nie mogą przyjąć wartości większych niż
były podane w 'starym' tokenie.
opcjonalnie
• validPeriod – czas ważności tokena w sekundach (możliwe wartości od
1-86400 [s]). Parametr opcjonalny, w przypadku gdy nie zostanie ustawiony
zostaje użyta wartość domyślna 10 [s]
• noAttempts – dopuszczalna ilość sprawdzeń tokenu. Jeśli -1 to nie ma
limitu na ilość sprawdzeń. Wartość domyślna parametru to 1.
• authSystem – autoryzacja na wybrany system – domyślnie USER
18 z 47
Wyjście
Zwracane wartości:
<tokenStr> - stworzony token
Błędy
Możliwe komunikaty błędów:
• invalidValidPeriod – zła wartość validPeriod. Musi się zawierać
między 1 a 86400 [s ]
• invalidCredentials – zła kombinacja userName, password,
authSystem albo użytkownik nie ma praw do wykonywania funkcji API
Przykład Wywołanie:
użycia
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getToken&userName=apidemo&password=apidemo
Przykładowa odpowiedź:
<?xml version=”1.0”?>
<response>
<getToken>
<tokenStr>
0bfcca72fbad31da6b9087337b468ffb670868a6c45969512df8fc7a9cd05d50
</tokenStr>
</getToken>
</response>
4.1.2 checkToken
Nazwa
funkcji
Opis
checkToken
Funkcja sprawdza ważność tokenu. W przypadku tej komendy nie jest wymagane
podpisanie komunikatu (czyli nie trzeba dołączać pola sig). Funkcja nie zmniejsza
licznika użyć dla tokena.
Wejście
• tokenStr – token który zostaje sprawdzony
Wyjście Zwracane znaczniki elementu <checkToken>:
• <userName> - login użytkownika
• <authSystem> - system w którym przebiegło uwierzytelnianie
Błędy
• invalidCredentials – podany token nie istnieje
Przykład Wywołanie:
użycia
https://apiuser.freeconet.pl/RestAPI/V2/execute?fun=checkToken&
tokenStr=815aa4d11b51ffc09b251da76a7bac81283a002442ac64efc03162922838fb51
Odpowiedź:
<?xml version=”1.0”?>
<response>
<checkToken>
<userName>apidemo</userName>
<authSystem>USER</authSystem>
<checkToken>
</response>
19 z 47
4.1.3 encryptPGP
Nazwa
funkcji
Opis
encryptPGP
Funkcja szyfruje podany ciąg tekstowy i zwraca wynik w postaci zgodnej z tym co
powinno znajdować się w polu encData (jest to format zgodny z RFC2440
http://sunsite.icm.edu.pl/gnupg/rfc2440-6.html dodatkowo bez nagłówku i stopki ,
tworzony w jednej linii oraz skonwertowane do URL Encoding). Uwaga! Funkcja
encryptPGP nie wymaga podawania userName/userDomain/password jak
również nie istnieje potrzeba generowania podpisu.
Wejście
• inputText – tekst do szyfrowania (tekst musi być w postaci URL Encoding)
Wyjście Zwracane znaczniki sekcji <encryptPGP>:
<outputStr> - stworzony token
Błędy
Możliwe komunikaty błędów:
• invalidData – nie udało się wykonać szyfrowania danych, zapewne złe
dane wejściowe.
Przykład Wywołanie:
użycia
https://apiuser.freeconet.pl/RestAPI/V2/execute?fun=encryptPGP&inputText=fun
%3DmakeCall%26userName%3Dapidemo%26password%3Dapidemo%26idService
%3D543452%26to%3D0587311999%26toType%3DN%26fromType%3DN
Odpowiedź:
<?xml version=”1.0”?>
<response>
<encryptPGP>
<outputStr>
wcBOA%2F%2FH0yB8UNK7EAQAibQEBMsX8aCXP%2Bh3M%2BdQEWgNRLIstz
%2F9EKY6Auox0q66z4scOwoUxnae%0ArrKYU8U5L3j8rpKK1Xv%2BXP5dQ
%2FhOqeQnl7UHPYRRzJDKXJRmgSMZwdAOujfXVmXiKNUsjDX2wpoz%0ArZsI
%2Bd0NNfUZ2TUVbQjP458vXFvKq%2FBaCGQtWr8D
%2FidMTSwSfYCbu0jHxOwbDgr8h9O9TNw4uKlT%0AND
%2ByWTC0FDgQfIODlhj1jH6BNtHh9CWHMPPfcS4b
%2Ft7ccYsPF2L0YzHISY1PjDXGbHcAAFPrgGmw
%0A0WbEW8Gos7VnBCdXz1I0DJvQ3v6WVQEl7UVfI2Q2y3k0WnYevZPfLU735pGg0pIBr0
J3tPULxPdy
%0ARgIyy9iJ3GEe2vHqIVXliGec1JIonVLDuDwuRuC9IYx44%2F9jHTxlnqpgpH6TNEiN
h01eoxVExlGN%0Ath5TmevPLgRQUQp49eodO4LyN7%2F5UGXREX05PFlQRUY9GF9QKG
%2FteFgT4B%2BpKt8tnLe990MWe%2BSn%0A4mVpu63SePClkh%2FPGmqtzVx9DLSAPw
%3D%3D%0A%3DRPDf</outputStr>
</encryptPGP>
</response>
4.1.4 invalidateToken
Nazwa
funkcji
Opis
Wejście
Wyjście
invalidateToken
Funkcja unieważnia wystawiony token. Token po takiej operacji przestaje być
aktywny i nie jest możliwe wykonywanie operacji z użyciem tego tokena. W
przypadku tej komendy nie jest wymagane podpisanie komunikatu (czyli nie trzeba
dołączać pola sig).
• tokenStr – token, który chcemy unieważnić
Zwracane znaczniki sekcji <invalidateToken>:
20 z 47
<tokenStr> - w przypadku udanej operacji w tym parametrze zwracana jest wartość
tokena podanego w parametrach wejściowych
Możliwe komunikaty błędów:
• invalidCredentials – token nie został znaleziony
Przykład Wywołanie:
użycia
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=invalidateToken&tokenStr=9358dae31aa89c05dc31171ecebf309ce3dba0b9ea9da
eb5702091dda4c65908&sig=b802ed9a60fabe9d88b29911b72e943b
Błędy
Odpowiedź:
<?xml version=”1.0”?>
<response>
<invalidateToken>
<tokenStr>9358dae31aa89c05dc31171ecebf309ce3dba0b9ea9daeb5702091dda
4c65908</invalidateToken>
</invalidateToken>
</response>
4.1.5 getVersion
Nazwa
funkcji
Opis
getVersion
Pobranie numeru wersji API – wersja składa się z trzech pól majorVer,
minorVer, buildVer jednoznacznie określających wersje API. W specyfikacji są
odnośniki do wersji w postaci <majorVer>,<minorVer> np. 2.01. Funkcja nie
wymaga dołączania pola sig.
Wejście Brak
Wyjście Zwracane znaczniki sekcji <getVersion>:
• <majorVer> - wersja główna (ang. major version)
• <minorVer> - wersja mniej ważna (ang. minor version)
• <buildVer> - numer kompilacji systemu (ang. build version)
Błędy
Brak
Przykład Wywołanie:
użycia
https://apiuser.freeconet.pl/RestAPI/V2/execute?fun=getVersion
Odpowiedź:
<?xml version=”1.0”?>
<response>
<getVersion>
<majorVer>2</majorVer>
<minorVer>0</minorVer>
<buildVer>0</buildVer>
</getVersion>
</response>
21 z 47
4.1.6 uploadFile
Nazwa
funkcji
Opis
Wejście
uploadFile
Funkcja umożliwia przesyłanie pliku do systemu, takie pliki mogą być np. używane
do wysyłki faksów. Dokumenty powinny mieć rozmiar nie większy niż 3MB. Pliki
trafiają do specjalnie wydzielonej przestrzeni dyskowej klienta, z której są
automatycznie usuwane po okresie jednego dnia od daty dodania. Nie można mieć
więcej jak 20 takich plików. W przypadku tej komendy nie jest wymagane podpisanie
komunikatu (czyli nie trzeba dołączać pola sig).
Dane powinny być przesyłane zgodnie z metodą POST. (patrz Przykład użycia).
Parametr w metodzie POST wskazujący plik powinien nazywać się:
<fileDocument>
Wyjście
Zwracane tagi XML:
<fileDocumentId> - identyfikator dokumentu pliku dodanego przez klienta (string)
Błędy
Możliwe komunikaty błędów:
• fileSizeExceeded – przekroczono dozwolony rozmiar pliku
• fileLimitExceeded – przekroczono dozwoloną ilość plików
• fileTransmissionError – błąd transmisji pliku
Przykład Wywołanie:
użycia
Poniżej przykładowy kod źródłowy w języku HTML pokazujący użycie funkcji
uploadFile
<html>
<body>
<form method="post" enctype="multipart/form-data"
action="https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=uploadFile&tokenStr=815aa4d11b51ffc09b251da76a7bac81283a002442ac6
4efc03162922838fb51">
<input type="file" name="fileDocument">
<button type="submit">
</form>
</body>
</html>
Odpowiedź:
<?xml version=”1.0”?>
<response>
<uploadFile>
<fileDocumentId>plik_1234.txt</fileDocumentId>
</uploadFile>
</response>
4.1.7 deleteFile
Nazwa
funkcji
Opis
Wejście
Wyjście
deleteFile
Funkcja umożliwia usunięcie wcześniej przesłanego pliku
<fileDocumentId> - identyfikator dokumentu pliku, który ma zostać skasowany
Zwracane tagi XML:
<fileDocumentId> - identyfikator dokumentu pliku skasowanego
22 z 47
Błędy
Możliwe komunikaty błędów:
• invalidFileDocumentId – nie znaleziono pliku o podanym identyfikatorze
Przykład Wywołanie:
użycia
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=deleteFile&fileDocumentId=plik_1234.txt&tokenStr=815aa4d11b51ffc09b251da
76a7bac81283a002442ac64efc03162922838fb51&sig=767848d05b5fbc9c39806586f
bcb8a28
Odpowiedź:
<?xml version=”1.0”?>
<response>
<deleteFile>
<fileDocumentId>plik_1234.txt</fileDocumentId>
</deleteFile>
</response>
4.2 Funkcje modułu API User
4.2.1 getGroupFinAccountInfo
Nazwa
funkcji
Opis
Wejście
Wyjście
getGroupFinAccountInfo
Funkcja pobiera informacje o saldzie konta dla grupy
Brak parametrów
Zwracane znaczniki sekcji <getGroupFinAccountInfo>:
• <credit> - stan konta w PLN
• <debit> - stan zobowiązań (tylko dla grup rozliczanych w postpaid)
• <creditLimit> - limit kredytu (tylko dla grup rozliczanych w postpaid)
• <minusCreditDate> - data kiedy stan konta spadł poniżej 0 PLN. Jeśli stan
jest powyżej zera to pole jest puste. Data jest podana w formacie Unixowego
czasu (ilość sekund od 1 stycznia 1970)
Przykład Wywołanie dla konta apidemo:
użycia
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getGroupFinAccountInfo&tokenStr=815aa4d11b51ffc09b251da76a7bac81283a0
02442ac64efc03162922838fb51&sig=86cee83a1d14bf7eb8c7b5f6e94a7dd4
Odpowiedź:
<?xml version=”1.0”?>
<response>
<getGroupFinAccountInfo>
<credit>0</credit>
<debit>0</debit>
<creditLimit>0</creditLimit>
<minusCreditDate></minusCreditDate>
</getGroupFinAccountInfo>
</response>
23 z 47
4.2.2 makeCall
Nazwa
funkcji
Opis
Wejście
makeCall
Funkcja zestawia połączenia między dwoma podanymi stronami. Funkcja można
wywołać na dwa sposoby:
• podajemy tylko parametry from i to. W takim przypadku do zestawienia
połączenia nie jest wymagane stworzenia instancji usługi 'Zestaw Połączenie' a
co za tym idzie koszt użytkowania tej funkcji sprowadza się jedynie do
kosztu zestawienia połączenia. W parametrze from oraz to można podawać
numer telefonu (np. '+48221234567') lub login konta SIP (np. 'jan_kowalski').
Dodatkowo nie można skorzystać z ustawień usługi 'Zestaw połączenie' np.
czarnej/białej listy.
• podane są pola idService, from, fromType, to, toType. Wywołanie
wymaga zdefiniowanie usługi 'Zestaw połączenie' w systemie FreecoNet. Po
stronie panelu usługa posiada możliwość konfiguracji, między innymi można
zdefiniować czarną listę dla numeru A czy też B.
W obu przypadkach wywołania funkcji w pierwszej kolejności zestawiane jest
połączenie z from a jak zostanie podniesiona słuchawka to z to.
• idService – identyfikator usługi przez który zostanie zrealizowane
połączenie. Ten parametr w przypadku użycia metody autoryzacji opartej o
szyfrowanie pól musi zostać umieszczony w części zaszyfrowanej.
Należ wybrać metodę połączenia do abonenta from:
• from – numer telefoniczny/ id usługi / nazwa konta
• fromType
o S - podany jest id usługi
o A – podana jest nazwa konta (userName)
o N – podany jest numer telefoniczny
oraz metodę połączenia do abonenta to:
• to – numer telefoniczny / id usługi / nazwa konta
• toType
o S - podany jest id usługi
o A – podana jest nazwa konta (userName)
o N – podany jest numer telefoniczny
Wyjście
Błędy
Uwaga. Podanie równocześnie toType oraz fromType na ‘A’ spowoduje
zwrócenie wartości loopDetected
Zwracane znaczniki sekcji <makeCall>:
• <callId> - unikalny identyfikator rozmowy w systemie FreecoNet.
Zwracane błędy:
• loopDetected – wykryto możliwość zapętlenia np. podano równocześnie
w param. wejściowych toType oraz fromType na ‘A’
• fromBlackListRej – numer A został odrzucony na podstawie czarnej listy
• fromWhiteListRej – numer A został odrzucony na podstawie białej listy
(numer niedopuszczony)
• toBlackListRej – numer B został odrzucony na podstawie czarnej listy
24 z 47
•
toWhiteListRej – numer B został odrzucony na podstawie białej listy
(numer nie dopuszczony)
• timeMaskRej – połączenie odrzucone ze względu na maskę czasową
• fromServiceNotEnabled – strona A nie może być usługą
• fromAccountNotEnabled – strona A nie może być użytkownikiem
• toServiceNotEnabled – strona B nie może być usługą
• toAccountNotEnabled – strona B nie może być użytkownikiem
• serviceDisabled – usługa wyłączona
• wrongFromNumber – błędny format numeru A
• wrongToNumber – błędny format numeru B
Przykład Wywołanie :
https://apiuser.freeconet.pl/RestAPI/V2/execute?encData=wcBOA
użycia
%2F%2FH0yB8UNK7EAP
%2FRkeYDuYSeANStQi0MadQo5EHkPVNS7uADXkLTYde4Uug7uV6NEzNsnTO+boR
Qx%2B48e2lsa4qltYd%2BRPtfI9TW
%2FJOEhYENwuz1zBTvOw1uX9gUN5gs2yMrOn9anB31wi8i4I0T+UnwfmSczTatc
7PTuHUjnH99Zssqcll7NC55LMWkD
%2F0rFdb34%2FXwoHG20%2BYDJ9EJ2UDcKiJ1e6I5J+Nmcd3YEElp9xhiS7bV6i
YnXpDKi5l7KJKUcTMboGsY7Nvn172%2F9t88ksb2PyM7JPwa9VQUO6H9Pt+n22V
ctkBym272lvRDF3nX8BSC8%2Bb5PFlWUKirwYgI
%2BDgTyB1B8Gjsksp4D460pIBQymN5RF8dZp0+8kdozH9izVc98ZRuLFBrS6Tta
M5gEj%2BSritQe3W%2B2EX7TnwhfrWd68EvQUjFR8XdecpyN
%2Fil7ykQ+OY0VXI5nXHqbBxFSLdU
%2FJPYFDTcZiE0FfHpa6bh5ZWQjvSOwFrAIwocOMDcPsMVZOJTKqlha2Xae+nzw
5a3hejcdK7dDWZ97CZJ%2B%2FPoFO3w%3D%3D+%3Dbumf&from=0895277082
W polu encData są zaszyfrowane następujące dane:
fun=makeCall&userName=apidemo&password=apidemo&idService=543452
&to=0587311999&toType=N&fromType=N
Odpowiedź:
<?xml version=”1.0”?>
<response>
<makeCall>
<callId>fsdfs23423423432234324</callId>
</makeCall>
</response>
4.2.3 getBillingCount
Nazwa
funkcji
Opis
Wejście
getBillingCount
Funkcja zlicza ilość wierszy zwracanych w raporcie połączeń dla zadanych kryteriów
wyszukiwania.
Poniżej lista pól definiujących kryterium wyszukiwania
• callDir
o OUT – rozmowy wychodzące
o IN – rozmowy przychodzące
• fromAccount (opcjonalne) - nazwa użytkownika z którego wychodzą
rozmowy.
25 z 47
•
•
Wyjście
Błędy
Przykład
użycia
toAccount (opcjonalne) – nazwa użytkownika do którego przychodzą
rozmowy
callType (opcjonalne) – typ rozmowy
o CHFR– rozmowy w obrębie platformy
o LOCC– rozmowy PSTN (np. TPSA)
o CALL,<id peera> - rozmowy realizowane przez zewnętrznego
operatora VoIP. Jeśli <id operatora> jest puste wyszukiwane są
rozmowy realizowane przez wszystkich operatorów zewnętrznych.
o LCR,<id peera LCR> - rozmowy przychodzące realizowane przez
operatora LCR. Jeśli <id peera LCR> jest puste wyszukiwane są
rozmowy przychodzące przez wszystkich operatorów LCR.
• isMissed – false są znajdowane rozmowy zrealizowane, true niezrealizowane
• fromDate - data od której wyszukiwane są rozmowy. Data podawana jest w
sekundach które upłynęły od 1 stycznia 1970 (Unix timestamp).
• toDate - data do której wyszukiwane są rozmowy. Data podawana jest w
sekundach które upłynęły od 1 stycznia 1970 (Unix timestamp).
• calleXFid – identyfikator użytkownika w systemie Call-eX
Zwracane znaczniki XML:
• <noOfRows> - ilość wyszukanych wierszy
Możliwe kody błędów:
• <invalidCallDir> - podano nieprawidłową wartość callDir
• <invalidCallType> - podano nieprawidłową wartość callType
• <invalidToAcc> i <invalidFromAcc>- nie znaleziono podanego konta, w
grupie na która przeprowadzony uwierzytelnianie
• <invalidIsMissed> - podano nieprawidłową wartość isMissed
• <invalidDate> - któraś z podanych dat jest nieprawidłowa
Chcemy sprawdzić ilość połączeń dla następujących kryteriów:
• Rozmowy wychodzące
• Rozmowy wychodzące z kont apidemo
• Rozmowy LCR (bez podania id peera)
• Tylko rozmowy zrealizowane
• Połączeni między 2008-01-01 13:00 a 2008-02-01 14:00
Wywołanie:
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getBillingCount&callDir=OUT&fromAccount=apidemo&callType=LCR&isMis
sed=false&fromDate=343434&toDate=354543543534&tokenStr=815aa4d11b51ffc0
9b251da76a7bac81283a002442ac64efc03162922838fb51&sig=0f838ca00d3fb8c72f9
3e833eb96a0fc
Odpowiedź:
<?xml version=”1.0”?>
<response>
<getBillingCount>
<noOfRows>1234</noOfRows>
</getBillingCount>
</response>
26 z 47
4.2.4 getBilling
Nazwa
funkcji
Opis
Wejście
getBilling
Funkcja pobiera listę połączeń dla zadanych kryteriów wyszukiwania. Jednym
wywołaniem można pobrać 200 wierszy, jeśli w wyniku otrzymujemy więcej niż 200
wierszy należy parokrotnie wywołać funkcje zmieniając offRow czyli numer wiersza
od którego pobieramy dane.
Poniżej lista pól definiujących kryterium wyszukiwania
• callDir
o OUT – rozmowy wychodzące
o IN – rozmowy przychodzące
• fromAccount (opcjonalne) – nazwa użytkownika z którego wychodzą
rozmowy.
• toAccount (opcjonalne) – nazwa użytkownika do którego przychodzą
rozmowy
• callType (opcjonalne) – typ rozmowy
o CHFR– rozmowy w obrębie platformy
o LOCC – rozmowy PSTN (np. TPSA)
o CALL,<id peera sip> - rozmowy realizowane przez zewnętrznego
operatora VoIP. Jeśli <id peera sip> jest puste wyszukiwane są
rozmowy realizowane poprzez wszystkie peery dla operatorów
zewnętrznych.
o LCR,<id peera LCR> - rozmowy przychodzące realizowane przez
peera LCR. Jeśli <id peera LCR> jest puste wyszukiwane są
rozmowy przychodzące przez wszystkie peery LCR.
• isMissed – false są brane rozmowy zrealizowane, true – niezrealizowane
• fromDate – data od której wyszukiwane są rozmowy. Data podawana jest w
sekundach które upłynęły od 1 stycznia 1970 (Unix timestamp).
• toDate – data do której wyszukiwane są rozmowy. Data podawana jest w
sekundach które upłynęły od 1 stycznia 1970 (Unix timestamp).
• calleXFid – identyfikator użytkownika w systemie Call-eX
• orderBy (opcjonalne) – określa po którym polu dokonywane jest sortowanie
o fromAccount – konto Od
o toAccount – konto Do
o fromNumber – numer Od
o toNumber – numer Do
o startDate – czas nawiązania połączenia
o callDuration – czas trwania połączenia
o callCost – koszt połączenia
o peerName – nazwa operatora
• orderDesc – kolejność sortowania. false – rosnąco, true– malejąco
• noOfRows – ilość wierszy do pobrania, maksymalna wartość 200
• offRow – od którego wiersza mają być pobrane dane
• columnList – lista kolumn poprzedzielane znakiem przecinka, które można
27 z 47
Wyjście
Błędy
pobrać poprzez wywołanie funkcji
o callType - typ rozmowy, możliwe wartości takie jak dla parametru
wejściowego
o fromAccount – nazwa konto Od
o toAccount – nazwa konto Do
o fromNumber – numer Od
o contactFNF – imię skojarzone w oparciu o książkę kontaktową dla
numeru Od
o contactLNF- nazwisko skojarzone w oparciu o książkę kontaktową
dla numeru Od
o toNumber – numer Do
o contactFNT – imię skojarzone w oparciu o książkę kontaktową dla
numeru Do
o contactLNT- nazwisko skojarzone w oparciu o książkę kontaktową
dla numeru Do
o startDate – czas rozpoczęcia rozmowy. Czas podawany jest w
formacie timestamp’u Unixowego. Czyli ilości sekund od 1970-01-01
00:00:00
o callDuration – czas trwania rozmowy podany w sekundach
o callRate – stawka podana w postaci czwórki x0,y0,x1,y1. X0 – czas
trwania pierwszego impulsu, Y0 – koszt pierwszego impulsu [PLN],
X1 – okres naliczania w [s], Y1 – stawka za 1 min połączenia.
Przykładowe wartości callRate:
 x0=0;y0=10;x1=0;y1=0 - opłata 10 zł. Tylko za
połączenie
 x0=0;y0=10;x1=1;y1=60 - opłata 10 zł. Za połączenie a
dodatkowo 1zł za każdą rozpoczętą sekundę
 x0=1;y0=36;x1=1;y1=36 - opłata 0.6 zł. Za każdą
rozpoczętą sekundę
 x0=10;y0=0.60;x1=1;y1=0.60 - pierwsze 10s za 0.1 zł.
Później 0.01 zł za każdą rozpoczętą sekundę
o callCost – koszt rozmowy
o peerName – nazwa operatora przez którego została zrealizowana
rozmowa
o calleXFid – aktualnie nie wypełniane
W parametrze <columnList> umieszczona jest lista kolumn (przedzielona
przecinkami) dla danych, które wystąpią w <billingData>. W <billingData>
będzie przesyłany spis połączeń w postaci rekordów rozdzielonych znakami LF (\n).
Każdy rekord będzie zawierał pola rozdzielone znakami ‘|’ (ang. pipe). Lista pól i ich
kolejność jest zdefiniowany przez <columnList>. W polu noOfRowsReq
zwracana jest ilość wierszy w danym żądaniu.
Lista kolumn które mogą się pojawić w odpowiedzi została opisane w sekcji
getBillingWejściecolumnList.
Możliwe kody błędów:
• <invalidCallDir> - podano nieprawidłową wartość callDir
• <invalidCallType> - podano nieprawidłową wartość callType
• <invalidToAccount> i <invalidFromAccount>- nie znaleziono
28 z 47
•
•
•
•
•
•
•
podanego konta, w grupie na która przeprowadzony uwierzytelnianie
<invalidIsMissed> - podano nieprawidłową wartość isMissed
<invalidDate> - któraś z podanych dat jest nieprawidłowa
<invalidDate> - jedna z podanych dat jest nieprawidłowa
<invalidColumnList> - wprowadzono niedozwoloną wartość w polu
columnList
<invalidOrderBy> - wprowadzono niedozwoloną wartość w polu orderBy
<invalidOrderDesc> - wprowadzono niedozwoloną wartość w polu
orderDesc
<invalidNoOfRows> - wprowadzono niedozwoloną wartość w polu
noOfRows (maksymalna wartość to 200)
<invalidOffRow> - wprowadzono niedozwoloną wartość w polu offRow
•
Przykład Chcemy pobrać ilość połączeń dla następujących kryterium:
użycia
• Rozmowy wychodzące
• Rozmowy wychodzące z konta apidemo
• Rozmowy LCR (bez podania peera LCR)
• Tylko rozmowy zrealizowane
• Połączenia między 2008-01-01 13:00 (czas Unix 1199192400) a 2008-02-01
14:00 (cza Unix 1201874400)
Lista powinna być posortowana rosnąco po koszcie połączenia i pobieramy 2 wierszy
od 100 wiersza. W rezultacie chcielibyśmy dostać następujące kolumny:
• numer Od
• numer Do
• czas trwania połączenia
• koszt połączenia
• data rozpoczęcia połączenia
• pobierane jest 100 pierwszych wierszy
Wywołanie:
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getBilling&callDir=OUT&fromAccount=apidemo&callType=LCR&isMissed=fa
lse&fromDate=1199192400&toDate=1201874400&orderBy=callCost&orderDesc=fal
se&noOfRows=100&offRow=1&columnList=fromNumber,toNumber,callDuration,ca
llCost,startDate&tokenStr=815aa4d11b51ffc09b251da76a7bac81283a002442ac64efc0
3162922838fb51&sig=b79072e81e70be8ce31c41abfc181750
Odpowiedź:
<?xml version=”1.0”?>
<response>
<getBilling>
<noOfRowsReq>2</noOfRowsReq>
<columnList>fromNumber,toNumber,callDuration,callCost,startDate</
columnList>
<billingData>
<![CDATA[
0895257406|48895257306|233|0.22|1210774923
0893444433|48344444444|33|2.2|1210773923
]]>
</billingData>
</getBilling>
</response>
29 z 47
4.2.5 sendFax
Nazwa
funkcji
Opis
sendFax
Funkcja umożliwia wysłanie pliku faksem.
Uwaga!
Autoryzacja odbywa się loginem oraz hasłem z usługi Wirtualny Faks zamiast
loginem i hasłem użytkownika panelu, autoryzować należy się na system
authSystem=FAXV.
Wejście
• campaignName – nazwa kampanii
• fileDocumentId – identyfikator pliku do wysłania
• timeMask – maska czasowa w formacie UNIX POSIX. Domyślnie przyjmuje
wartość * * * * *
• numberList - lista numerów rozdzielonych przecinkami, na które zostanie
wysłany dokument faksu. Numery należy podawać w takim samym formacie
jak w telefonie np. 0221234567 lub +48221234567, 0049123456789 (Niemcy)
• toDelete - wskazuje czy plik wysyłany powinien być skasowany (wartość
true) po użyciu czy nie (wartość false). Jeśli parametr nie jest podany
domyślnie ustawiony jest na true.
Wyjście Zwracane znaczniki XML:
• <batchId> - unikalny numer zlecenia faksowego
Błędy
Możliwe kody błędów:
• <invalidFileDocumentId> - nie znaleziono pliku o podanym
identyfikatorze
• <invalidNumList> - podana lista numerów jest w błędna
Przykład Wywołanie:
użycia
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=sendFax&fileDocumentID=plik_1234.txt&timeMask=* * * *
*&numberList=0581234567,0587654321,0581111111&tokenStr=7b4f24d8b17b1502
4426c3a5125577942f876ccb2c132c9f273296220899835e&sig=41b97e4da175a684e5
7adf080d1be605
Odpowiedź:
<?xml version=”1.0”?>
<response>
<sendFax>
<batchId>12344</batchId>
</sendFax>
</response>
4.2.6 getFaxCurrentCount
Nazwa
funkcji
Opis
getFaxCurrentCount
Funkcja zwraca ilość wierszy w spisie faksów aktualnie wysyłanych spełniających
określone kryteria.
30 z 47
Uwaga!
Autoryzacja odbywa się loginem oraz hasłem z usługi Wirtualny Faks zamiast
loginem i hasłem użytkownika panelu, autoryzować należy się na system
authSystem=FAXV.
Wejście Parametry wywołania:
• faxStatus – status dokumentu faksu. Dopuszczalne parametry to:
o WAITING, STARTED, CANCELED, ALL
Wyjście Zwracane tagi XML:
• <noOfRows> - ilość wyszukanych wierszy
Błędy
Możliwe kody błędów:
• <invalidFaxStatus> - podano błędny status dokumentu faksu
Przykład Chcemy sprawdzić ilość faksów dla następującego kryterium:
użycia
• Faksy oczekujące
Wywołanie:
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getFaxCurrentCount&faxStatus=WAITING&tokenStr=7b4f24d8b17b15024426c
3a5125577942f876ccb2c132c9f273296220899835e&sig=165887a64ea6baa990f65abf
c64b45a3
Odpowiedź:
<?xml version=”1.0”?>
<response>
<getFaxCurrentCount>
<noOfRows>10</noOfRows>
</getFaxCurrentCount>
</response>
4.2.7 getFaxSentCount
Nazwa
funkcji
Opis
Wejście
Wyjście
Błędy
getFaxSentCount
Funkcja zwraca ilość wierszy w spisie faksów wysłanych spełniających określone
kryteria.
Uwaga!
Autoryzacja odbywa się loginem oraz hasłem z usługi Wirtualny Faks zamiast
loginem i hasłem użytkownika panelu, autoryzować należy się na system
authSystem=FAXV .
Parametry wywołania:
• fromDate - data od której wyszukiwane są faksy. Data podawana jest w
sekundach które upłynęły od 1 stycznia 1970 (Unix timestamp).
• toDate - data do której wyszukiwane są faksy. Data podawana jest w
sekundach które upłynęły od 1 stycznia 1970 (Unix timestamp).
• faxStatus – status wysyłki dokumentu faksu. Dopuszczalne parametry to:
o ENDED, ERROR, CANCELED, ALL
Zwracane tagi XML:
• <noOfRows> - ilość wyszukanych wierszy
Możliwe kody błędów:
• <invalidFaxStatus> - podano błędny status dokumentu faksu
31 z 47
• <invalidDate> - jedna z podanych dat jest nieprawidłowa
Przykład Chcemy sprawdzić ilość faksów dla następującego kryterium:
użycia
• Faksy wysłane
• Tylko faksy wysłane prawidłowo
• Połączeni między 2008-01-01 13:00 a 2008-02-01 14:00
Wywołanie:
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getFaxSentCount&faxStatus=ENDED&fromDate=343434555&toDate=3545435
43534&tokenStr=7b4f24d8b17b15024426c3a5125577942f876ccb2c132c9f27329622
0899835e&sig=81d6da206e6f47a670f7df685c23ffc0
Odpowiedź:
<?xml version=”1.0”?>
<response>
<getFaxSentCount>
<noOfRows>10</noOfRows>
</getFaxSentCount>
</response>
4.2.8 getFaxReceivedCount
Nazwa
funkcji
Opis
getFaxReceivedCount
Funkcja zwraca ilość wierszy w spisie faksów odebranych spełniających określone
kryteria.
Uwaga!
Autoryzacja odbywa się loginem oraz hasłem z usługi Wirtualny Faks zamiast
loginem i hasłem użytkownika panelu, autoryzować należy się na system
authSystem=FAXV .
Wejście Parametry wywołania:
• fromDate - data od której wyszukiwane są faksy. Data podawana jest w
sekundach które upłynęły od 1 stycznia 1970 (Unix timestamp).
• toDate - data do której wyszukiwane są faksy. Data podawana jest w
sekundach które upłynęły od 1 stycznia 1970 (Unix timestamp).
Wyjście Zwracane tagi XML:
• <noOfRows> - ilość wyszukanych wierszy
Błędy
Możliwe kody błędów:
• <invalidDate> - jedna z podanych dat jest nieprawidłowa
Przykład Chcemy sprawdzić ilość faksów dla następującego kryterium:
użycia
• Faksy odebrane
• Połączeni między 2008-01-01 13:00 a 2008-02-01 14:00
Wywołanie:
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getFaxReceivedCount&fromDate=343434555&toDate=354543543534&tokenStr
=7b4f24d8b17b15024426c3a5125577942f876ccb2c132c9f273296220899835e&sig=f
96602d87edd7deede2e8ae9e9190e26
32 z 47
Odpowiedź:
<?xml version=”1.0”?>
<response>
<getFaxReceivedCount>
<noOfRows>10</noOfRows>
</getFaxReceivedCount>
</response>
4.2.9 getFaxSent
Nazwa
funkcji
Opis
Wejście
Wyjście
getFaxSent
Funkcja umożliwia pobranie listy wysłanych faksów dla danej konsoli faksowej.
Uwaga!
Autoryzacja odbywa się loginem oraz hasłem z usługi Wirtualny Faks zamiast
loginem i hasłem użytkownika panelu, autoryzować należy się na system
authSystem=FAXV .
Parametry wywołania:
• fromDate - data od której wyszukiwane są faksy. Data podawana jest w
sekundach które upłynęły od 1 stycznia 1970 (Unix timestamp).
• toDate - data do której wyszukiwane są faksy. Data podawana jest w
sekundach które upłynęły od 1 stycznia 1970 (Unix timestamp).
• faxStatus – status dokumentu faksu
o ENDED, ERROR, CANCELED, ALL
• orderBy – pole decydujące po jakim polu odbywa się sortowanie. Lista
możliwych wartości – batchId, toNumber, sentDate
• orderDesc - kolejność sortowania. false – rosnąco, true – malejąco
• noOfRows - ilość wierszy do pobrania, maksymalna wartość 200
• offRow - od którego wiersza mają być pobrane dane
• columnList – lista kolumn poprzedzielane znakiem przecinka, które można
pobrać poprzez wywołanie funkcji
o batchId – identyfikator kampanii wysyłki faksu
o itemId – identyfikator elementu wysyłki faksu
o toNumber – numer odbiorcy
o faxStatus – status wysyłki dokumentu
o faxStatusDetails – szczegółowy status wysyłki faksu
o noAttempt – aktualna próba
o maxNoAttempts – maksymalna liczba prób
o sentDate – data wysłania dokumentu (Unix timestamp)
o noPages – liczba wysłanych stron
o sentCost – koszt wysłania faksu
o fileUrl – adres URL dokumentu faksu
o fileName – nazwa pliku dokumentu faksu
W parametrze <columnList> umieszczona jest przedzielona przecinkami lista
kolumn, które wystąpią w odpowiedzi – sekcja <faxData>. W <faxData> będzie
przesyłany spis połączeń w postaci rekordów rozdzielonych znakami LF (\n). Każdy
rekord będzie zawierał pola rozdzielone znakami ‘|’ (ang. pipe). Lista pól i ich
33 z 47
kolejność jest zdefiniowany przez <columnList>.W polu noOfRowsReq zwracana
jest ilość wierszy zwracanych w danym żądaniu.
Błędy
Lista kolumn które mogą się pojawić w odpowiedzi została opisane w sekcji
getFaxSentWejściecolumnList.
Możliwe kody błędów:
• <invalidFaxStatus> - podano błędny status dokumentu faksu
• <invalidDate> - jedna z podanych dat jest nieprawidłowa
• <invalidColumnList> - wprowadzono niedozwoloną wartość w polu
•
•
•
columnList
<invalidOrderBy> - wprowadzono niedozwoloną wartość w polu orderBy
<invalidOrderDesc> - wprowadzono niedozwoloną wartość w polu
orderDesc
<invalidNoOfRows> - wprowadzono niedozwoloną wartość w polu
noOfRows (maksymalna wartość to 200)
<invalidOffRow> - wprowadzono niedozwoloną wartość w polu offRow
•
Przykład Chcemy pobrać faxy dla następujących kryterium:
użycia
• Faksy wysłane
• Tylko faksy wysłane prawidłowo
• Połączeni między 2008-01-01 13:00 a 2008-02-01 14:00
• Interesują nas kolumny toNumber, faxStatus, noAttempt
Chcemy w rezultacie otrzymać następujące pola:
• numer Od
• status wysłania faksu
• ilość prób
Wywołanie:
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getFaxSent&faxStatus=ENDED&fromDate=343434&toDate=354543543534&c
olumnList=toNumber,faxStatus,noAttempt&tokenStr=7b4f24d8b17b15024426c3a512
5577942f876ccb2c132c9f273296220899835e&orderBy=sentDate&orderDesc=true&
noOfRows=100&offRow=1&sig=f16e1963cad368d85e42a63bd82ad52f
Odpowiedź:
<?xml version=”1.0”?>
<response>
<getFaxSent>
<noOfRowsReq>2</noOfRowsReq>
<columnList>toNumber,faxStatus,noAttempt</columnList>
<faxData>
<![CDATA[
0895257406|ENDED|1
0893444433|ENDED|2
]]>
</faxData>
</getFaxSent>
</response>
34 z 47
4.2.10 getFaxReceived
Nazwa
funkcji
Opis
Wejście
Wyjście
Błędy
getFaxReceived
Funkcja umożliwia pobranie listy odebranych faksów dla danej konsoli faksowej.
Uwaga!
Autoryzacja odbywa się loginem oraz hasłem z usługi Wirtualny Faks zamiast
loginem i hasłem użytkownika panelu, autoryzować należy się na system
authSystem=FAXV.
Parametry wywołania:
• fromDate - data od której wyszukiwane są faksy. Data podawana jest w
sekundach które upłynęły od 1 stycznia 1970 (Unix timestamp).
• toDate - data do której wyszukiwane są faksy. Data podawana jest w
sekundach które upłynęły od 1 stycznia 1970 (Unix timestamp).
• orderBy – pole decydujące po jakim polu odbywa się sortowanie. Lista
możliwych pól – toNumber, receivedDate, fromNumber
• orderDesc - kolejność sortowania. false – rosnąco, true – malejąco
• noOfRows - ilość wierszy do pobrania, maksymalna wartość 200
• offRow - od którego wiersza mają być pobrane dane
• columnList – lista kolumn poprzedzielane znakiem przecinka, które można
pobrać poprzez wywołanie funkcji
o fromNumber – numer telefonu ‘Od’
o toNumber –numer telefonu ‘Do’
o receivedDate – data otrzymania faksu
o itemId – identyfikator odebranego faksu
o fileUrl – link do pliku z faksem odebranym
W parametrze <columnList> umieszczona jest przedzielona przecinkami lista
kolumn, które wystąpią w odpowiedzi – sekcja <faxData>. W <faxData> będzie
przesyłany spis połączeń w postaci rekordów rozdzielonych znakami LF (\n). Każdy
rekord będzie zawierał pola rozdzielone znakami ‘|’ (ang.pipe). Lista pól i ich
kolejność jest zdefiniowany przez <columnList>.W polu noOfRowsReq zwracana
jest ilość wierszy zwracanych w danym żądaniu.
Lista kolumn które mogą się pojawić w odpowiedzi została opisane w sekcji
getFaxRecvWejściecolumnList.
Możliwe kody błędów:
• <invalidFaxStatus> - podano błędny status dokumentu faksu
• <invalidDate> - jedna z podanych dat jest nieprawidłowa
• <invalidColumnList> - wprowadzono niedozwoloną wartość w polu
•
•
•
•
columnList
<invalidOrderBy> - wprowadzono niedozwoloną wartość w polu orderBy
<invalidOrderDesc> - wprowadzono niedozwoloną wartość w polu
orderDesc
<invalidNoOfRows> - wprowadzono niedozwoloną wartość w polu
noOfRows (maksymalna wartość to 200)
<invalidoffRow> - wprowadzono niedozwoloną wartość w polu offRow
35 z 47
Przykład Chcemy pobrać faksy dla następujących kryterium:
użycia
• Faksy odebrane
• Połączeni między 2008-01-01 13:00 a 2008-02-01 14:00
• Interesują nas kolumny toNumber
Chcemy w rezultacie otrzymać następujące pola:
• numer Od
Wywołanie:
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getFaxReceived&fromDate=343434&toDate=354543543534&columnList=toNu
mber&tokenStr=7b4f24d8b17b15024426c3a5125577942f876ccb2c132c9f273296220
899835e&orderBy=receivedDate&orderDesc=true&noOfRows=100&offRow=1&sig
=7e4a60a5b92f0b39ed51538d9d7358d2
Odpowiedź:
<?xml version=”1.0”?>
<response>
<getFaxReceived>
<noOfRowsReq>2</noOfRowsReq>
<columnList>toNumber</columnList>
<faxData>
<![CDATA[
0895257406
0893444433
]]>
</faxData>
</getFaxReceived>
</response>
4.2.11 getFaxCurrent
Nazwa
funkcji
Opis
Wejście
getFaxCurrent
Funkcja umożliwia pobranie listy aktualnie wysyłanych faksów dla danej konsoli
faksowej.
Uwaga!
Autoryzacja odbywa się loginem oraz hasłem z usługi Wirtualny Faks zamiast
loginem i hasłem użytkownika panelu, autoryzować należy się na system
authSystem=FAXV.
Parametry wywołania:
• faxStatus – status dokumentu faksu
o WAITING, STARTED, CANCELED, ALL
• orderBy – pole decydujące po jakim polu odbywa się sortowanie. Lista
możliwych pól – batchId, toNumber, creationDate
• orderDesc - kolejność sortowania. false – rosnąco, true – malejąco
• noOfRows - ilość wierszy do pobrania, maksymalna wartość 200
• offRow - od którego wiersza mają być pobrane dane
• columnList – lista kolumn poprzedzielane znakiem przecinka, które można
36 z 47
Wyjście
Błędy
pobrać poprzez wywołanie funkcji
o batchId – identyfikator kampanii wysyłki faksu
o itemId – identyfikator elementu wysyłki faksu
o toNumber -docelowy numer telefonu
o faxStatus – status dokumentu faksu
o noAttempt - ilość wykonanych prób
o maxNoAttempts – maksymalna liczba prób
o creationDate – data utworzenia dokumentu
o fileUrl – adres URL dokumentu faksu
o fileName – nazwa pliku dokumentu faksu
W parametrze <columnList> umieszczona jest przedzielona przecinkami lista
kolumn, które wystąpią w odpowiedzi – sekcja <faxData>. W <faxData> będzie
przesyłany spis połączeń w postaci rekordów rozdzielonych znakami LF (\n). Każdy
rekord będzie zawierał pola rozdzielone znakami ‘|’ (ang.pipe). Lista pól i ich
kolejność jest zdefiniowany przez <columnList>.W polu noOfRowsReq zwracana
jest ilość wierszy zwracanych w danym żądaniu.
Lista kolumn które mogą się pojawić w odpowiedzi została opisane w sekcji
getFaxCurrWejściecolumnList.
Możliwe kody błędów:
• <invalidFaxStatus> - podano błędny status dokumentu faksu
• <invalidDate> - jedna z podanych dat jest nieprawidłowa
• <invalidColumnList> - wprowadzono niedozwoloną wartość w polu
•
•
•
columnList
<invalidOrderBy> - wprowadzono niedozwoloną wartość w polu orderBy
<invalidOrderDesc> - wprowadzono niedozwoloną wartość w polu
orderDesc
<invalidNoOfRows> - wprowadzono niedozwoloną wartość w polu
noOfRows (maksymalna wartość to 200)
<invalidOffRow> - wprowadzono niedozwoloną wartość w polu offRow
•
Przykład Chcemy pobrać faxy dla następujących kryterium:
użycia
• Faxs w trakcie wysyłki oczekujący na wysyłkę
• Interesują nas kolumny toNumber, faxStatus, noAttempt
Chcemy w rezultacie otrzymać następujące pola:
• numer Od
• status wysłania faksu
• ilość prób
Wywołanie:
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getFaxCurrent&faxStatus=WAITING&columnList=toNumber,faxStatus,noAttem
pt&tokenStr=7b4f24d8b17b15024426c3a5125577942f876ccb2c132c9f273296220899
835e&orderBy=creationDate&orderDesc=true&noOfRows=100&offRow=1&sig=96
b0a13a89ce2959025d479a0775e784
Odpowiedź:
<?xml version=”1.0”?>
<response>
37 z 47
<getFaxCurrent>
<noOfRowsReq>2</noOfRowsReq>
<columnList>toNumber,faxStatus,noAttempt</columnList>
<faxData>
<![CDATA[
0895257406|WAITING|1
0893444433|WAITING|2
]]>
</faxData>
</getFaxCurrent>
</response>
4.2.12 StartMassDial
Nazwa
funkcji
Opis
Wejście
Wyjście
Błędy
startMassDial
Funkcja umożliwia rozpoczęcie kampanii MassDial.
Uwaga!
Autoryzacja odbywa się loginem oraz hasłem z usługi MassDial zamiast loginem i
hasłem użytkownika panelu, autoryzować należy się na system authSystem=MASD.
• campaignName – nazwa kampanii
• fileDocumentId – identyfikator pliku dźwiękowego. Parametr opcjonalny.
• timeMask – maska czasowa w formacie UNIX POSIX. Domyślnie przyjmuje
wartość * * * * *
• playingMode – tryb odtwarzania. Opcja dostępna jest tylko gdy podana jest
wartość fileDocumentId. Możliwe wartości:
o playFileFirst – odtwarza nagranie z pliku przed komunikatem
o playFileLast – odtwarza nagranie z pliku po komunikacie
• taskList – lista docelowych numerów i przypisanych im komunikatów do
odtworzenia (format: numer;komunikat|numer;komunikat).
• toDelete - wskazuje czy plik powinien być skasowany (wartość true) po
użyciu czy nie (wartość false). Jeśli parametr nie jest podany domyślnie
ustawiony jest na true.
• presentationNum – numer, którym będzie się prezentować kampania
MassDial. Numer jest odpowiednikiem prezentacji w konfiguracji konta w
panelu. Gdy ten numer nie jest podany ustawienia prezentacji będą takie jakie
są ustawienia dla konta. Numer należy podawać w formacie +48221234567.
Funkcja presentationNum działa tylko w przypadku, gdy konto przez które
realizowane jest połączenie, ma ustawioną prezentację 'użyj z bramki'.
Zwracane znaczniki XML:
• <batchId> - unikalny identyfikator kampanii
Możliwe komunikaty błędów:
• invalidFileDocumentId – podano nieprawidłowy identyfikator dokumentu
• invalidPlayingMode – podany tryb odtwarzania jest nieprawidłowy
• invalidTaskList – podana lista komunikatów jest nieprawidłowa
• invalidTimeMask – podana maska czasowa ma błędny format
• invalidPresentationNum – podany numer prezentacji jest nieprawidłowy
(zły format, nie znaleziono podanego numeru)
38 z 47
Przykład Wywołanie:
użycia
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=startMassDial&fileDocumentID=plik_1234.mp3&timeMask=* * * *
*&tokenStr=cae54dc195caaba426cbe9dbda2d97c345b9507cb7b304392bc7da4bf1095
72b&campaignName=Moja_Kampania_01&taskList=123456789;Komunikat1|
123456790;Komunikat2&playingMode=playFileLast&sig=9036d5d902b25443af96cd
4f57f16575
Odpowiedź:
<?xml version=”1.0”?>
<response>
<startMassDial>
<batchId>12344</batchId>
</startMassDial>
</response>
4.2.13 getMassDialCurrentCount
Nazwa
funkcji
Opis
getMassDialCurrentCount
Funkcja zwraca ilość wierszy w spisie połączeń MassDial aktualnie przetwarzanych
spełniających określone kryteria.
Uwaga!
Autoryzacja odbywa się loginem oraz hasłem z usługi MassDial zamiast loginem i
hasłem użytkownika panelu, autoryzować należy się na system authSystem=MASD.
Wejście Parametry wywołania:
• massDialStatus – status połączenia MassDial. Dopuszczalne parametry to:
o WAITING, STARTED, CANCELED, ALL
Wyjście Zwracane tagi XML:
• <noOfRows> - ilość wyszukanych wierszy
Błędy
Możliwe kody błędów:
• <invalidMassDialStatus> - podano błędny status kampanii
Przykład Chcemy sprawdzić ilość połączeń dla następującego kryterium:
użycia
• Połączenia oczekujące
Wywołanie:
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getMassDialCurrentCount&massDialStatus=WAITING&tokenStr=cae54dc195ca
aba426cbe9dbda2d97c345b9507cb7b304392bc7da4bf109572b&sig=e63999ad9b7dbb
c8e1c092d42139852b
Odpowiedź:
<?xml version=”1.0”?>
<response>
<getMassDialCurrentCount>
<noOfRows>10</noOfRows>
</getMassDialCurrentCount>
</response>
39 z 47
4.2.14 getMassDialCalledCount
Nazwa
funkcji
Opis
getMassDialCalledCount
Funkcja zwraca ilość wierszy w spisie połączeń zakończonych spełniających
określone kryteria.
Uwaga!
Autoryzacja odbywa się loginem oraz hasłem z usługi MassDial zamiast loginem i
hasłem użytkownika panelu, autoryzować należy się na system authSystem=MASD.
Wejście Parametry wywołania:
• fromDate - data od której wyszukiwane są połączenia. Data podawana jest w
sekundach które upłynęły od 1 stycznia 1970 (Unix timestamp).
• toDate - data do której wyszukiwane są połączenia. Data podawana jest w
sekundach które upłynęły od 1 stycznia 1970 (Unix timestamp).
• massDialStatus – status połączenia MassDial. Dopuszczalne parametry to:
o ENDED, ERROR, CANCELED, ALL
• massDialStatusDetails – opcja dostępna tylko przy wyborze
massDialStatus na ENDED. Dopuszczalne wartości to:
o SUCCESSFUL – zakończone powodzeniem
o PARTIAL – częściowo zrealizowane
o SWITCHED – zakończone powodzeniem, następnie przełączone na
wyjście z usługi
Wyjście Zwracane tagi XML:
• <noOfRows> - ilość wyszukanych wierszy
Błędy
Możliwe kody błędów:
• <invalidMassDialStatus> - podano błędny status połączenia MassDial
• <invalidDate> - jedna z podanych dat jest nieprawidłowa
Przykład Chcemy sprawdzić ilość połączeń MassDial dla następującego kryterium:
użycia
• połączenia zakończone sukcesem
• Połączeni między 2008-01-01 13:00 a 2008-02-01 14:00
Wywołanie:
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getMassDialCalledCount&massDialStatus=ENDED&massDialStatusDetails=SU
CCESSFUL&fromDate=343434555&toDate=354543543534&tokenStr=cae54dc195c
aaba426cbe9dbda2d97c345b9507cb7b304392bc7da4bf109572b&sig=b486e56f2644e
d7741317f99ef73253c
Odpowiedź:
<?xml version=”1.0”?>
<response>
<getMassDialCalledCount>
<noOfRows>10</noOfRows>
</getMassDialCalledCount>
</response>
40 z 47
4.2.15 getMassDialCurrent
Nazwa
funkcji
Opis
Wejście
Wyjście
getMassDialCurrent
Funkcja umożliwia pobranie listy aktualnie realizowanych połączeń dla konsoli
MassDial
Uwaga!
Autoryzacja odbywa się loginem oraz hasłem z usługi MassDial zamiast loginem i
hasłem użytkownika panelu, autoryzować należy się na system authSystem=MASD.
Parametry wywołania:
• massDialStatus – status połączenia
o WAITING,STARTED,CANCELED,ALL
• orderBy – pole decydujące po jakim polu odbywa się sortowanie. Lista
możliwych pól – batchId, toNumber, creationDate
• orderDesc - kolejność sortowania. false – rosnąco, true – malejąco
• noOfRows - ilość wierszy do pobrania, maksymalna wartość 200
• offRow - od którego wiersza mają być pobrane dane
• columnList – lista kolumn poprzedzielane znakiem przecinka, które można
pobrać poprzez wywołanie funkcji
o batchId – identyfikator kampanii MassDial
o itemId – identyfikator połączenia MassDial
o announcement – komunikat jaki zostanie przeczytany po odebraniu
połączenia
o toNumber - docelowy numer telefonu
o massDialStatus – status połączenia MassDial
o noAttempt - ilość wykonanych prób
o maxNoAttempts – maksymalna liczba prób
o creationDate – data utworzenia dokumentu
o fileUrl – adres URL pliku do odtwarzania
o fileName – nazwa pliku pliku do odtwarzania
o playingMode – tryb odtwarzania. Możliwe wartości:
o playFileFirst – odtwarza nagranie z pliku przed
komunikatem
o playFileLast – odtwarza nagranie z pliku po komunikacie
W parametrze <columnList> umieszczona jest przedzielona przecinkami lista
kolumn, które wystąpią w odpowiedzi – sekcja <massDialData>. W
<massDialData> będzie przesyłany spis połączeń w postaci rekordów
rozdzielonych znakami LF (\n). Każdy rekord będzie zawierał pola rozdzielone
znakami ‘|’ (ang.pipe). Lista pól i ich kolejność jest zdefiniowany przez
<columnList>.W polu noOfRowsReq zwracana jest ilość wierszy zwracanych w
danym żądaniu.
Lista kolumn które mogą się pojawić w odpowiedzi została opisane w sekcji
getMassDialCurrWejściecolumnList.
41 z 47
Błędy
Możliwe kody błędów:
• <invalidMassDialStatus> - podano błędny status połączenia MassDial
• <invalidDate> - jedna z podanych dat jest nieprawidłowa
• <invalidColumnList> - wprowadzono niedozwoloną wartość w polu
columnList
• <invalidOrderBy> - wprowadzono niedozwoloną wartość w polu orderBy
• <invalidOrderDesc> - wprowadzono niedozwoloną wartość w polu
orderDesc
• <invalidNoOfRows> - wprowadzono niedozwoloną wartość w polu
noOfRows (maksymalna wartość to 200)
• <invalidOffRow> - wprowadzono niedozwoloną wartość w polu offRow
Przykład Chcemy pobrać połączenia MassDial dla następujących kryterium:
użycia
• połączenia bieżące, oczekujące
• Interesują nas kolumny toNumber, massDialStatus, noAttempt
Chcemy w rezultacie otrzymać następujące pola:
• numer Od
• status połączenia
• ilość prób
Wywołanie:
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getMassDialCurrent&massDialStatus=WAITING&columnList=toNumber,massD
ialStatus,noAttempt&orderBy=creationDate&orderDesc=true&noOfRows=100&offR
ow=1&tokenStr=cae54dc195caaba426cbe9dbda2d97c345b9507cb7b304392bc7da4bf
109572b&sig=950fdf242ed647337ef3e2ca28e5314e
Odpowiedź:
<?xml version=”1.0”?>
<response>
<getMassDialCurrent>
<noOfRowsReq>2</noOfRowsReq>
<columnList>toNumber,massDialStatus,noAttempt</columnList>
<massDialData>
<![CDATA[
0895257406|WAITING|1
0893444433|WAITING|2
]]>
</massDialData>
</getMassDialCurrent>
</response>
4.2.16 cancelMassDialCurrent
Nazwa
funkcji
Opis
cancelMassDialCurrent
Funkcja umożliwia anulowanie listy zadań z listy aktualnie realizowanych połączeń
MassDial
Uwaga!
Autoryzacja odbywa się loginem oraz hasłem z usługi MassDial zamiast loginem i
hasłem użytkownika panelu, autoryzować należy się na system authSystem=MASD.
42 z 47
Wejście
Parametry wywołania:
• itemList – lista identyfikatorów połączeń MassDial, które mają zostać
anulowane
Wyjście
<status> - jeżeli udało się anulować połączenia MassDial pole to przyjmie wartość
CANCELED
Błędy
Możliwe kody błędów:
• <invalidItemList> - podano nieprawidłową listę identyfikatorów połączeń
MassDial lub połączenia są w trakcie realizacji i nie można ich już anulować
Przykład Wywołanie:
użycia
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=cancelMassDialCurrent&itemList=123,456,234&tokenStr=cae54dc195caaba426
cbe9dbda2d97c345b9507cb7b304392bc7da4bf109572b&sig=8a69e8f6cddfef4cd2b9a
f9c03c94df7
Odpowiedź:
<?xml version=”1.0”?>
<response>
<cancelMassDialCurrent>
<status>CANCELED</status>
</cancelMassDialCurrent>
</response>
4.2.17 getMassDialCalled
Nazwa
funkcji
Opis
Wejście
getMassDialCalled
Funkcja umożliwia pobranie listy zakończonych połączeń dla konsoli MassDial.
Uwaga!
Autoryzacja odbywa się loginem oraz hasłem z usługi MassDial zamiast loginem i
hasłem użytkownika panelu, autoryzować należy się na system authSystem=MASD.
Parametry wywołania:
• fromDate -data od której wyszukiwane są połączenia. Data podawana jest w
sekundach które upłynęły od 1 stycznia 1970 (Unix timestamp).
• toDate -data do której wyszukiwane są połączenia. Data podawana jest w
sekundach które upłynęły od 1 stycznia 1970 (Unix timestamp).
• massDialStatus – status zadania
o ENDED, ERROR, CANCELED, ALL
• massDialStatusDetails – opcja dostępna tylko przy wyborze
massDialStatus na ENDED. Dopuszczalne wartości to:
o SUCCESSFUL – zakończone powodzeniem
o PARTIAL – częściowo zrealizowane
o SWITCHED – zakończone powodzeniem, następnie przełączone na
wyjście z usługi
• orderBy – pole decydujące po jakim polu odbywa się sortowanie. Lista
możliwych pól – batchId, toNumber, callDate
• orderDesc - kolejność sortowania. false – rosnąco, true – malejąco
• noOfRows - ilość wierszy do pobrania, maksymalna wartość 200
43 z 47
•
•
Wyjście
Błędy
offRow - od którego wiersza mają być pobrane dane
columnList – lista kolumn poprzedzielane znakiem przecinka, które można
pobrać poprzez wywołanie funkcji
o batchId – identyfikator kampanii MassDial
o itemId – identyfikator elementu kampanii MassDial (połączenia)
o announcement – komunikat odtwarzany po odebraniu połączenia
o toNumber – docelowy numer telefonu
o massDialStatus – status połączenia
o massDialStatusDetails – szczegółowy status połączenia
o noAttempt – aktualna próba
o maxNoAttempts – maksymalna liczba prób
o callDuration – czas połączenia
o callDate – data zakończenia połączenia
o callCost – koszt połączenia
o fileUrl – adres URL pliku do odtwarzania
o fileName – nazwa pliku do odtwarzania
o playingMode – tryb odtwarzania. Możliwe wartości:
o playFileFirst – odtwarza nagranie z pliku przed
komunikatem
o playFileLast – odtwarza nagranie z pliku po komunikacie
o contactName – imię i nazwisko jeżeli numer docelowy znajduje się
na liście kontaktów zdefiniowanych w panelu
W parametrze <columnList> umieszczona jest przedzielona przecinkami lista
kolumn, które wystąpią w odpowiedzi – sekcja <massDialData>. W
<massDialData> będzie przesyłany spis połączeń w postaci rekordów
rozdzielonych znakami LF (\n). Każdy rekord będzie zawierał pola rozdzielone
znakami ‘|’ (ang.pipe). Lista pól i ich kolejność jest zdefiniowany przez
<columnList>.W polu noOfRowsReq zwracana jest ilość wierszy zwracanych w
danym żądaniu.
Lista kolumn które mogą się pojawić w odpowiedzi została opisane w sekcji
getMassDialCalledWejściecolumnList.
Możliwe kody błędów:
• <invalidMassDialStatus> - podano błędny status połączenia MassDial
• <invalidDate> - jedna z podanych dat jest nieprawidłowa
• <invalidColumnList> - wprowadzono niedozwoloną wartość w polu
•
•
•
columnList
<invalidOrderBy> - wprowadzono niedozwoloną wartość w polu orderBy
<invalidOrderDesc> - wprowadzono niedozwoloną wartość w polu
orderDesc
<invalidNoOfRows> - wprowadzono niedozwoloną wartość w polu
noOfRows (maksymalna wartość to 200)
<invalidOffRow> - wprowadzono niedozwoloną wartość w polu offRow
•
Przykład Chcemy pobrać połączenia dla następujących kryterium:
użycia
• Połączenia zakończone
• Połączenia zakończone prawidłowo
• Połączenia między 2008-01-01 13:00 a 2008-02-01 14:00
• Interesują nas kolumny toNumber, massDialStatus, noAttempts
44 z 47
Chcemy w rezultacie otrzymać następujące pola:
• numer Od
• status połączenia
• ilość prób
Wywołanie:
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getMassDialCalled&massDialStatus=ENDED&fromDate=343434&toDate=3545
43543534&columnList=toNumber,massDialStatus,noAttempt&orderBy=callDate&or
derDesc=true&noOfRows=100&offRow=1&tokenStr=cae54dc195caaba426cbe9dbda
2d97c345b9507cb7b304392bc7da4bf109572b&sig=76b91e608090cafc035c63ea3465
eb46
Odpowiedź:
<?xml version=”1.0”?>
<response>
<getMassDialCalled>
<noOfRowsReq>2</noOfRowsReq>
<columnList>toNumber,massDialStatus,noAttempts</columnList>
<massDialData>
<![CDATA[
0895257406|ENDED|1
0893444433|ENDED|2
]]>
</massDialData>
</getMassDialCalled>
</response>
4.2.18 deleteMassDialCalled
Nazwa
funkcji
Opis
Wejście
Wyjście
Błędy
deleteMassDialCalled
Funkcja umożliwia usunięcie listy zadań z listy zakończonych połączeń MassDial
Uwaga!
Autoryzacja odbywa się loginem oraz hasłem z usługi MassDial zamiast loginem i
hasłem użytkownika panelu, autoryzować należy się na system authSystem=MASD.
Parametry wywołania:
• itemList – lista identyfikatorów połączeń MassDial, które mają zostać
usunięte
<status> - jeżeli udało się anulować połączenia MassDial pole to przyjmie wartość
DELETED
Możliwe kody błędów:
• <invalidItemList> - podano nieprawidłową listę identyfikatorów połączeń
MassDial
Przykład Wywołanie:
użycia
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=deleteMassDialCalled&itemList=123,456,234&tokenStr=cae54dc195caaba426cb
45 z 47
e9dbda2d97c345b9507cb7b304392bc7da4bf109572b&sig=f391c5e5d3dea09d58000b
fdb504deb0
Odpowiedź:
<?xml version=”1.0”?>
<response>
<deleteMassDialCalled>
<status>DELETED</status>
</deleteMassDialCalled>
</response>
4.2.19 restartMassDialCalled
Nazwa
funkcji
Opis
Wejście
Wyjście
restartMassDialCalled
Funkcja umożliwia ponowną realizację listy zadań z listy zakończonych połączeń
MassDial
Uwaga!
Autoryzacja odbywa się loginem oraz hasłem z usługi MassDial zamiast loginem i
hasłem użytkownika panelu, autoryzować należy się na system authSystem=MASD.
Parametry wywołania:
• itemList – lista identyfikatorów połączeń MassDial, które mają zostać
ponownie zrealizowane
<batchId> - każdy element batchId wskazuje na nowo utworzone zadanie
MassDial. Jeżeli podane identyfikatory połączeń wskazują na realizację połączeń w
tym samym zadaniu zostaną one również zrealizowane w jednym zadaniu
Błędy
Możliwe kody błędów:
• <invalidItemList> - podano nieprawidłową listę identyfikatorów połączeń
MassDial
Przykład Wywołanie:
użycia
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=restartMassDialCalled&itemList=123,456,234&tokenStr=cae54dc195caaba426c
be9dbda2d97c345b9507cb7b304392bc7da4bf109572b&sig=a00b685831ca950796a4
5996667663b3
Odpowiedź:
<?xml version=”1.0”?>
<response>
<restartMassDialCalled>
<batchId>10021</batchId>
<batchId>10022</batchId>
</restartMassDialCalled>
</response>
46 z 47
4.2.20getRegistrationStatus
Nazwa
funkcji
Opis
getRegistrationStatus
Funkcja umożliwia pobranie statusu rejestracji kont zdefiniowanych w obrębie
grupy. Gdzie przez rejestracje konta rozumiemy – rejestracje terminala na to konto.
Wejście
• accountList – lista kont przedzielonych przecinkami dla których chcemy
pobrać statusy. Jednorazowo można podać listę 20 kont.
Wyjście Zwracana jest informacja ze statusem dla poszczególnych kont w sekcji
<registerStatusList>. Informacje o pojedynczym koncie zwracana jest w sekcji
<registerStatus> i zawiera następujące elementy:
• <userName> – nazwa konta
• <status> – status rejestracji
o REGISTERED – przynajmniej jeden terminal jest zarejestrowany na
koncie.
o UNREGISTERED – nie było próby rejestracji na koncie
o TRYING – była nieudana próba rejestracji
• <noRegistered> – ilość zalogowanych bramek na danym koncie
Błędy
Możliwe kody błędów:
• <invalidAccountList> - podano więcej niż 20 numerów lub nie znaleziono
któregoś z podanych kont
Przykład Wywołanie:
użycia
https://apiuser.freeconet.pl/RestAPI/V2/execute?
fun=getRegistrationStatus&accountList=apidemo&tokenStr=815aa4d11b51ffc09b251
da76a7bac81283a002442ac64efc03162922838fb51&sig=cd9303672e2754e8d043849
25fce73c1
Odpowiedź:
<?xml version=”1.0”?>
<response>
<getRegistrationStatus>
<registerStatusList>
<registerStatus>
<userName>test</userName>
<status>REGISTERED</status>
<noRegistered>1</noRegistered>
</registerStatus>
<registerStatus>
<userName>test1</userName>
<status>REGISTERED</status>
<noRegistered>2</noRegistered>
</registerStatus>
</registerStatusList>
</getRegistrationStatus>
</response>
5 Opłaty
RestAPI 2.x jest usługą bezpłatną.
47 z 47

Podobne dokumenty