Pełna dokumentacja REST API v2
Szablony mailingowe klienta
Kontroler służy do pobierania danych dotyczących szablonów mailingowych klienta.
Listowanie aktywnych szablonów klienta
Metoda zwraca wszystkie aktywne szablony mailingowe klienta w formacie json.
Wywołanie:
POST /rest/templates/lists
Dane w POST:
limit | Opcjonalne | Limit zwracanych danych. Wartość domyślna to 100 wyników. Metoda zwraca maksymalnie 500 wyników. | |
---|---|---|---|
offset | Opcjonalne | Przesunięcie danych. Wartość domyślna 0. Nazwa katalogu, w którym znajdują się szablony klienta. | |
directory_name | Opcjonalne | Jeśli parametr nie zostanie podany, zwrócone zostaną szablony zarówno z wszystkich katalogów klienta oraz te, które nie zostały przypisane do żadnego katalogu. |
Zwracane dane (kod odpowiedzi 200):
id_hash | Hash szablonu | |
---|---|---|
name | Nazwa szablonu mailingowego | |
description | Opis szablonu | |
thumb | Link do miniaturki |
Zwracanie informacji o pojedynczym szablonie klienta
Metoda zwraca szczegóły dotyczące pojedynczego szablonu mailingowego klienta o podanym hashu.
Wywołanie:
POST /rest/templates/template
Dane w POST:
hash | Wymagane | Hash szablonu klienta |
---|
Zwracane dane (kod odpowiedzi 200):
id_hash | Hash szablonu | |
---|---|---|
name | Nazwa szablonu mailingowego | |
description | Opis szablonu | |
created_on | Data stworzenia szablonu w formacie yyyy-mm-dd H:i:s | |
content_reb | Szablon w postaci kodu HTML | |
product | Kod pojedynczego produktu. Do wykorzystania w konkretnych integracjach np. do stworzenia porzuconego koszyka |
|
thumb | Link do miniaturki |
Zwracane dane (kod odpowiedzi 422):
errors | Tablica zawierająca informacje na temat błędów |
---|
Dokumentacja API V2
Wywołanie:
POST /rest/mail
Dane w POST:
subscriber | Wymagane | Adres email subskrybenta do którego wysyłamy email. |
---|---|---|
subject | Wymagane | Tytuł emaila. |
html | Wymagane* | Treść html emaila (wymagana jeśli nie ma treści text). |
text | Wymagane* | Treść tekstowa emaila (wymagana jeśli nie ma treści html). |
from | Opcjonalne | Pole „Od”, jeśli będzie puste w to miejsce wstawi się domyślny adres nadawcy z systemu. |
from_name | Opcjonalne | Pole „Nazwa nadawcy”, jeśli będzie puste w to miejsce wstawi się domyślna nazwa nadawcy z systemu. |
reply_to | Opcjonalne | Pole „Odpowiedz do”, jeśli będzie puste w to miejsce wstawi się domyślny adres nadawcy z systemu. |
encoding | Opcjonalne | Kodowanie w jakim ma zostać wysłany email. Domyślnie jest to UTF-8. Pamiętaj, że email musi być przekazany w tym samym kodowaniu, które jest przekazane w parametrze encoding.Obsługiwane kodowania to: UTF-8, iso-8859-2 |
attachments | Opcjonalne | Link do załącznika, który ma zostać dołączony do maila. Maksymalny rozmiar załączników to 0.5 MB |
tracking | Opcjonalne | Pole przyjmujące wartośc 0/1. Jeśli przekazane zostanie 1 to email będzie trackingowany przez kody śledzące zachowania subskrybenta.Uwaga: oznacza to, że domena w jakiej pojawiają się linki zostanie zmieniona oraz do wersji HTML zostanie dodany obrazek śledzący. |
domain | Opcjonalnie | Domena do rebrandingu, wartość aktywna tylko jeśli jest włączony dla maila tracking. Jeśli wartość będzie pusta lub nie zostanie przekazana zostanie umieszczona domyślna domena do rebrandingu. Przykładowa domena: mojanazwafirmy.mailnews.plUwaga: aby korzystać z domen do rebrandingu w pierwszej kolejności należy taką domenę zgłosić korzystając z panelu w aplikacji. |
tag | Opcjonalnie | Oznaczenie typu wysyłanego maila. Wykorzystując tagi, raporty z maili transakcyjnych zostaną podzielone na podgrupy.Przykładowe tagi: Mail Akceptacyjny, Mail przypominający, itp. |
Kody błędów:
1201 | Błędny adres subskrybenta. |
---|---|
1202 | Brak tematu maila. |
1203 | Brak treści HTML oraz tekstowej. |
1204 | Błędny adres „odpowiedz do”. |
1205 | Błędny adres email nadawcy. |
1206 | Nazwa nadawcy nie może być pusta. |
1207 | Przekroczono dzienny limit wysłanych maili. |
1208 | Nieobsługiwane kodowanie. |
1209 | Nieprawidłowy link do załącznika. |
1210 | Plik załącznika nie istnieje. |
1211 | Przekroczono maksymalny rozmiar załączników. |
1212 | Niepoprawna domena do rebrandingu, sprawdź czy domena została aktywowana. |
1213 | Tag kampanii niepoprawny (za długi lub zawierający niedozwolone znaki) |
1250 | Nie udało się wysłać emaila, błąd systemu. |
1251 | Nie wysłano emaila do tego subskrybenta, zablokowany administracyjnie |
Autoryzacja
Dokumentacja PDF API REST v 1.0.34
API systemu FreshMail zostało zrealizowane według wzorca REST.
Komunikacja polega na wysłaniu żądania HTTP pod adres https://api.freshmail.com/rest/ i ewentualnym przesłaniu wymaganych danych. Odpowiedź jest zwracana w formacie JSON.
Uwierzytelnienie
Każde wysłane żądanie po API wymaga uwierzytelnienia. Klient ma do wyboru jedną z dwóch możliwości uwierzytelnienia:
- Bearer Token
- ApiKey & ApiSign
Bearer Token (Preferowana forma autoryzacji)
Uwierzytelnienie następuje poprzez wysłanie nagłówka HTTP o nazwie:
Authorization: Bearer XYZ | gdzie XYZ zawiera unikalny token dostępu do API, każdy z klientów posiada swój unikalny token/grupę tokenów API.
Token można znaleźć w Aplikacji przechodząc do: |
---|
Przykład poprawnego nagłówka:
Authorization: Bearer fisgvt.6waelw6v7WiZ68mnFMExI79YXY3Y1RH0Xc5
ApiKey & ApiSign
Uwierzytelnienie następuje poprzez wysłanie nagłówków HTTP o nazwach:
X-Rest-ApiKey | zawiera unikalny klucz dostępu do API, każdy z klientów posiada swój unikalny klucz API. subskrypcje → lista subskrypcyjna → opcje zaawansowane i API |
---|---|
X-Rest-ApiSign | zawiera podpis żądania. Podpis jest generowany na podstawie parametrów wysyłanych w żądaniu oraz na podstawie ApiSecret. |
Istnieją dwa schematy generowania X-Rest-ApiSign, oba zostały przedstawione poniżej:
1. Schemat oparty na URL-encoded query
wymagane jest dodanie nagłówka Content-Type w żądaniu http o wartości:
text/html lub application/xml lub application/json, np.:
Content-Type: application/json
wtedy można wygenerować X-Rest-ApiSign w oparciu o algorytm:
sha1( ApiKey + GET_data + POST_data + ApiSecret )
gdzie:
ApiKey | 32 znakowy klucz API. |
---|---|
GET_data | pełna ścieżka dostępu – np. /rest/ping, /rest/mail itp. Więcej szczegółów w sekcji „Ścieżka dostępu”. |
POST_data | dane POST umieszczone w żądaniu. Jeśli w żądaniu znajdują się tylko dane GET to wartość POST_data jest pusta. Wartości muszą być escapowane na potrzeby URL, np.: email=test%40test.pl&subject=test+emaila |
ApiSecret | 40 znaków, unikalny sekret dla każdego z klientów. W przypadku skompromitowania klucza należy bezzwłocznie wygenerować nowy. |
2. Schemat oparty na JSON
wymagane jest dodanie nagłówka Content-Type w żądaniu http w postaci:
Content-Type: application/json
wtedy można wygenerować X-Rest-ApiSign w oparciu o algorytm:
sha1( ApiKey + GET_data + JSON_data + ApiSecret )
gdzie:
ApiKey | 32 znakowy Api key. |
---|---|
GET_data | pełna ścieżka dostępu – np. /rest/ping, /rest/mail itp. Więcej szczegółów w sekcji „Ścieżka dostępu”. |
JSON_data | dane w formacie JSON jakie są wysyłane w żądaniu. Jeśli w żądaniu znajdują się tylko dane GET to wartość JSON_data jest pusta. Przykładowa wartość JSON_data: {"subscriber":"test@test.pl"} |
ApiSecret | 40 znaków, unikalny sekret dla każdego z klientów. W przypadku skompromitowania klucza należy bezzwłocznie wygenerować nowy. |
Odpowiedzi API
Odpowiedź na każde żądanie wysłane do API jest w formacie JSON, np.
{"status":"OK","data":[1,2,3]}
Jeśli zapytanie powiedzie się wtedy pod kluczem „status” będziemy mieli wartość 'OK'. Jeśli metoda ma zwrócić dane będą one pod kluczem „data”. Natomiast jeśli wystąpi błąd pod kluczem „status” będzie wartość „ERROR”, a pod kluczem „errors” znajdzie się opis błędów jakie wystąpiły wraz z kodami błędów.
W przypadku błędu kod HTTP zwracany w nagłówku jest adekwatny do zaistniałego błędu, czyli np. 404, 403 itp. W przypadku braku błędu kod HTTP to 200.
Obsługa błędów
W razie wystąpienia błędu status odpowiedzi jest równy „ERROR” natomiast pole „errors” zawiera opis słowny błędu oraz kod błędu, np.
{"errors":[
{"message":"Brak tematu emaila",
"code": 1202}
],
"status":"ERROR"}
lub
{"errors":[
{"message": "Błędny adres odbiorcy",
"code": 1201},
{"message": "Brak tematu emaila",
"code": 1202}
],
"status":"ERROR"}
Ścieżka dostępu
Każda z akcji jaką można wykonać ma swoją osobną ścieżkę dostępu. Ścieżka zbudowana jest w następujący sposób:
/rest/[Controller]/[Action]/[param]/[param]/[param]
Controller | nazwa kontrolera np. ping, mail, itp. |
---|---|
Action | nazwa akcji w obrębie kontrolera. |
param | parametr, nie może zawierać znaku „/”, w większości przypadków dodatkowe parametry GET są zbędne. Jeśli są wymagane to ilość oraz ich format jest podany w opisie akcji. |
Ogólne kody błędów
500 | Błąd serwera (Internal Server Error). |
---|---|
1000 | Brak autoryzacji. |
1001 | Nie znaleziono kontrolera / akcji. |
1002 | Nieobsługiwany protokół. Proszę skorzystać z protokołu https. |
1003 | Nieobsługiwany rodzaj żądania, np. wysłano GET, a oczekiwano POST. |
1004 | Brak uprawnień do wywołania danego kontrolera/akcji |
Spamtesty
Kontroler służy do sprawdzania maili pod kątem prawdopodobieństwa wpadnięcia wiadomości do spamu.
Sprawdzenie zgodności z filtrami SpamAssassin
Medota służy do przetestowania ile punktów spamowych oraz za co dostanie Twoja wiadomość w filtrze SpamAssassin.
Pamiętaj: Nie wszystkie systemy pocztowe korzystają z tego oprogramowania, wynik jest poglądowy i przy innej konfiguracji programów pocztowych może się różnić od pokazanego w tym teście. Wynik pozytywny (poniżej 5.0 punktów spamowych NIE oznacza, że inne filtry antyspamowe nie zatrzymają twojej wiadomości).
Wywołanie
/rest/spam_test/check
Dane:
subject | Wymagane | Temat maila | |
---|---|---|---|
from | Opcjonalne | Adres nadawcy | |
from_name | Opcjonalne | Nazwa nadawcy | |
html | Opcjonalne *) | Treść html | |
text | Opcjonalne *) | Treść tekstowa |
*) Co najmniej jedno z wyróżnionych pól musi być wypełnione
Zwracane dane:
tests | Lista testów antyspamowych których mail nie przeszedł | |
---|---|---|
score | Sumaryczna punktacja za testy antyspamowe |
Kody błędów:
1901 | Brak tematu | |
---|---|---|
1902 | Niepoprawny adres nadawcy „from” | |
1904 | Brak treści maila | |
1906 | Błąd systemu sprawdzania | |
1907 | Przekroczono limit testów w ciągu jednego dnia |
Listy odbiorców – zarządzanie
Kontroler służy do zarządzania listami subskrypcyjnymi. Umożliwia ich dodawanie, modyfikowanie, listowanie oraz usuwanie.
Tworzenie list
Funkcja służy do tworzenia list subskrypcyjnych. Zwraca hash listy, którym można się dalej posługiwać.
Wywołanie:
/rest/subscribers_list/create
Dane:
name | Wymagane | Nazwa listy subskrypcyjnej | |
---|---|---|---|
description | Opcjonalne | Opis listy subskrypcyjnej | |
custom_fields | Opcjonalne | Tablica definiująca pola dodatkowe (wedle opisu z punktu Tworzenie pól dodatkowych w listach) |
Zwracane dane:
hash | Hash nowej listy subskrypcyjnej | |
---|---|---|
custom_fields | Tablica z pełnymi opisami utworzonych pól – jeśli miały być utworzone. |
Kody błędów:
1601 | Pusta wartość w polu name | |
---|---|---|
1602 | Nie udało się utworzyć listy subskrypcyjnej | |
1603 | Błędna lista pól dodatkowych. | |
1604 | Tag personalizacji powinien składać się jedynie z liter, cyfr i znaku podkreślenia. | |
1605 | Nieprawidłowy typ pola. |
Modyfikowanie list
Funkcja służy do modyfikowania list subskrypcyjnych.
Wywołanie:
/rest/subscribers_list/update
Dane:
hash | Wymagane | Hash listy subskrypcyjnej | |
---|---|---|---|
name | Wymagane | Nazwa listy subskrypcyjnej | |
description | Opcjonalne | Opis listy subskrypcyjnej |
Kody błędów:
1611 | Pusta wartość w polu name lub brak parametru name | |
---|---|---|
1604 | Brak uprawnień do listy |
Usuwanie list
Funkcja służy do usuwania list subskrypcyjnych.
Wywołanie:
/rest/subscribers_list/delete
Dane:
hash | Wymagane | Hash listy subskrypcyjnej |
---|
Kody błędów:
1604 | Brak uprawnień do listy | |
---|---|---|
1605 | Nie udało się usunąć listy subskrypcyjnej |
Pobieranie danych o listach
Funkcja służy do listowania wszystkich list subskrypcyjnych. Zwraca tablice z danymi wszystkich list do których konto ma uprawnienia.
Wywołanie:
/rest/subscribers_list/lists
Zwracane dane:
hash | Hash listy subskrypcyjnej | |
---|---|---|
name | Nazwa listy subskrypcyjnej | |
description | Opis listy subskrypcyjnej | |
creation_date | Data utworzenia listy subskrypcyjnej | |
subscribers_number | Liczba aktywnych subskrybentów |
Tworzenie pól dodatkowych w listach
Funkcja służy do tworzenia pól dodatkowych w listach subskrypcyjnych
Wywołanie:
/rest/subscribers_list/addField
Dane:
hash | Wymagane | Hash listy subskrypcyjnej | |
---|---|---|---|
name | Wymagane | Nazwa pola w liście | |
tag | Opcjonalne | Tag pod którym wartości z tego pola będą dostępne w mailach (w przypadku braku jest tworzony na podstawie nazwy pola) | |
type | Opcjonalne | Typ pola – „text", „number", „phone" (domyślnie „text"). Dla starszych wersji: 0 - tekstowe, 1 - numeryczne (domyślnie tekstowe) |
Zwracane dane:
id_hash | Hash pola dodatkowego | |
---|---|---|
field_name | Nazwa pola dodatkowego | |
personalization_tag | Tag pod którym wartości z tego pola będą dostępne w mailach | |
field_type | Typ pola – „text", „number", „phone". Dla starszych wersji: 0 - tekstowe, 1 - numeryczne |
Kody błędów:
1622 | Błędny lub pusty hash listy subskrypcyjnej | |
---|---|---|
1623 | Błędna lub pusta nazwa pola | |
1624 | Błędna nazwa tagu | |
1625 | Błędny typ pola | |
1626 | Pole dodatkowe o takim tagu personalizacji już istnieje |
Wyświetlenie listy pól dodatkowych w podanej liście
Funkcja służy do wyświetlenia wszystkich pól dodatkowych w wybranej liście subskrypcyjnej
Wywołanie:
/rest/subscribers_list/getFields
Dane:
hash | Wymagane | Hash listy subskrypcyjnej |
---|
Zwracane dane:
hash | Hash pola dodatkowego | |
---|---|---|
name | Nazwa pola dodatkowego | |
tag | Tag pod którym wartości z tego pola będą dostępne w mailach |
Kody błędów:
1632 |
Błędny lub pusty hash listy subskrypcyjnej |
---|
Tworzenie kont
Metoda tworzy konto użytkownika. Można utworzyć zarówno konto główne jak i konto podrzędne.
Wywołanie:
POST /rest/account/create
Dane w POST:
login | Wymagane | Login nowego użytkownika (adres email) | |
---|---|---|---|
password | Wymagane | Hasło którym użytkownik będzie się logował | |
firstname | Wymagane | Imię użytkownika | |
lastname | Wymagane | Nazwisko użytkownika | |
company | Opcjonalne | Nazwa firmy | |
phone | Wymagane | Numer telefonu | |
activation_mail | Opcjonalne | Czy ma być wysłany mail aktywacyjny (domyślnie true) | |
activation | Opcjonalne | Czy konto ma wymagać aktywacji (domyślnie true) | |
child_account | Opcjonalne | Czy konto ma być kontem podrzędnym (domyślnie true) |
Zwracane dane:
hash | Hash nowo założonego konta | |
---|---|---|
api_key | Api key nowo założonego konta | |
api_secret | Secret nowo założonego konta |
Kody błędów:
1501 | Brak loginu (adres email) | |
---|---|---|
1502 | Nieprawidłowy login | |
1503 | Login już istnieje w systemie | |
1504 | Brak hasła | |
1505 | Hasło jest za słabe - musi zawierać co najmniej 8 znaków - w tym jedną literę, jedną liczbę oraz jeden znak specjalny | |
1506 | Brak imienia | |
1507 | Brak nazwiska | |
1509 | Brak telefonu | |
1510 | Wystąpił błąd podczas tworzenia konta | |
1511 | Konto nie zostało utworzone. | |
1512 | Nie udało się przypisać konta do aplikacji | |
1513 | Brak uprawnień do tworzenia kont. |
Subskrybenci – zarządzanie wieloma subskrybentami w pojedynczym żądaniu
Za pomocą poniższych metod można wykonywać dokładnie te same działania co przy zarządzaniu pojedynczymi subskrybentami, ale w żądaniu można przesłać do 100 subskrybentów naraz.
Dodawanie wielu subskrybentów
Metoda dodaje wielu subskrybentów jeśli nie było ich w liście subskrypcyjnej lub aktualizuje ich status i dane jeśli nie był w statusie „Aktywny” oraz „Do aktywacji”. W przypadku dodania tylko części z adresów (np. jeden z adresów jest niepoprawny) zostaje zwrócony kod 200 oraz dane dotyczące błędnego/błędnych adresów.
W przypadku nie dodania żadnego subskrybenta zostanie zwrócony błąd 422.
Wywołanie:
POST /rest/subscriber/addMultiple
Dane w POST:
subscribers | Wymagane | Tablica z adresami email i polami dodatkowymi w postaci
{"email" : "adres_email", "custom_fields": { "tag personalizacji pola 1" : "wartość", "tag personalizacji pola 1" : "wartość" } } Pole ”custom_fields” nie jest obowiązkowe. |
|
---|---|---|---|
list | Wymagane | Hash list subskrypcyjnej | |
state | Opcjonalne | Status jaki chcemy nadać subskrybentowi, jeśli pole będzie puste zostanie nadany status „Do aktywacji”, lista dostępnych statusów w dziale „Kody Statusów Subskrybentów” | |
confirm | Opcjonalne | Czy do subskrybenta ma być wysłany email potwierdzający. Możliwe wartości to 0 oraz 1. Jeśli pole będzie puste zostanie wysłany email z potwierdzeniem. To pole jest ignorowane (email nie zostanie wysłany) jeśli nadamy subskrybentowi status inny niż „Do aktywacji”. |
Przykładowy request:
{"list":"id_hash",
"subscribers" : [{"email":"tester1@freshmail.pl",
"custom_fields":{"imie":"Hanna",
"kod_promocyjny":"abcde"} },
{"email":"tester2@freshmail.pl",
"custom_fields":{"imie":"Anna",
"kod_promocyjny":"efgh"} },
{"email":"tester3@freshmail.pl",
"custom_fields":{"imie":"Agata",
"kod_promocyjny":"wxyz"}}]}
Kody błędów:
1331 | Nie udało się dodać/aktualizować żadnego subskrybenta | |
---|---|---|
1332 | Lista subskrypcyjna nie istnieje lub brak hash'a listy | |
1333 | Subskrybent jest na czarnej liście | |
1335 | Próbowano nadać niepoprawny status subskrybenta | |
1336 | Nie przekazano adresów email do dodania | |
1399 | Za dużo subskrybentów w jednym żądaniu – limit 100 |
Przykład częściowych błędów, wysłany request:
{"list":"4zcnmd2ski",
"subscribers":[{"email":"poprawny@adres.email.pl"},
{"email":"niepoprawny adres email"}]}
Zwracane dane (kod odpowiedzi 200):
{"status":"OK",
"data":{
"inserted":1,
"not_inserted":1,
"errors":[{"email":"niepoprawny adres email",
"error":"Email address not correct",
"code":1301}]}}
Kody błędów zwracane dla poszczególnych subskrybentów są identyczne jak kody błędów dla metody /rest/subscriber/add
Modyfikowanie danych wielu subskrybentów
Metoda aktualizuje status i dane wielu subskrybentów
Wywołanie:
POST /rest/subscriber/editMultiple
Dane w POST:
subscribers | Wymagane |
Tablica z adresami email i polami dodatkowymi w postaci {"email" : "adres_emaiil", "custom_fields": { "tag personalizacji pola 1" : "wartość", "tag personalizacji pola 1" : "wartość" } } Pole ”custom_fields” nie jest obiwiązkowe. |
|
---|---|---|---|
list | Wymagane | Hash list subskrypcyjnej | |
state | Opcjonalne | Status jaki chcemy nadać subskrybentowi, jeśli pole będzie puste aktualny status subskrybenta nie zostanie zmieniony |
Kody błędów:
1331 | Nie udało się dodać/aktualizować żadnego subskrybenta | |
---|---|---|
1332 | Lista subskrypcyjna nie istnieje lub brak hash'a listy | |
1335 | Próbowano nadać niepoprawny status subskrybenta | |
1336 | Nie przekazano adresów email do zaktualizowania | |
1399 | Za dużo subskrybentów w jednym żądaniu – limit 100 |
Zwracane dane/informacje o błędach są identyczne jak w przypadku metody /rest/subscriber/addMultiple
Modyfikowanie pól dodatkowych wszystkich subskrybentów
Metoda aktualizuje wybrane pole dodatkowe i ustawia ustaloną wartość dla wszystkich subskrybentów
Wywołanie:
POST /rest/subscriber/updateFieldValue
Dane w POST:
listHash | Wymagane |
Hash list subskrypcyjnej |
|
---|---|---|---|
tag | Wymagane |
Tag pola dodatkowego (np. kod_promocyjny) |
|
value | Wymagane |
Wartość jak zostanie ustawiona w danym polu dodatkowym dla wszystkich subskrybentów |
|
url | Wymagane |
Adres www na który ma zostać wysłana odpowiedź po zakończeniu procesu aktualizacji |
Zwracane dane:
id | id procesu |
---|
Kody błędów:
1381 | Pole dodatkowe nie istnieje | |
---|---|---|
1382 | Brak hasha listy lub tag'a pola dodatkowego | |
1383 | Niepoprawny adres url | |
1384 | Zbyt duża liczba znaków w polu „value” - max. 255 | |
1385 | Pole „value” jest wymagane | |
1386 | Proces aktualizacji tego pola wciąż trwa, poczekaj na jego zakończenie |
Przykład odpowiedzi niepoprawnej:
{"status":"ERROR",
"errors":[{
"message":"Niepoprawny adres url",
"code":1383
}]}
Przykład odpowiedzi poprawnej (kod odpowiedzi 200):
{"status":"OK",
"data":{
"id":5
}}
Po procesie aktualizacji zostanie wysłane żądanie na wskazany adres URL. Odpowiedz będzie żądaniem typu POST, w treści żądania znajdą się następujące dane:
id | id procesu | |
---|---|---|
updated | ilość zaktualizowanych pól subskrybentów |
Przykładowe żądanie:
{"status":"OK",
"data":{ "id":5,
"updated":150
}}
W odpowiedzi skrypt oczekuje kody ze statusem „OK”:
{"status":"OK"}
Jeśli powyższa odpowiedz nie będzie poprawna, skrypt ponowi kilka razy próbę komunikacji, przy większej ilości błędów nastąpi zaniechanie wysyłania kolejnych żądań.
Pobieranie danych wielu subskrybentów
W przypadku gdy request jest częściowo niepoprawny (np. część adresów email nie istnieje) lub całkowicie niepoprawny (np. żaden z adresów email nie istnieje) zostaje zwrócony kod 200 oraz dane dotyczące błędnego/błędnych adresów.W przypadku gdy request jest całkowicie niepoprawny (np. żaden z adresów email nie istnieje) zostaje zwrócony kod 422 wraz z wiadomością błędu.
Wywołanie:
POST/rest/subscriber/getMultiple
Dane w GET:
subscribers | Wymagane |
Tablica z adresami email użytkowników: { {"email":"tester1@freshmail.pl"}, {"email":"tester2@freshmail.pl"}, {"email":"tester3@freshmail.pl"} } |
|
---|---|---|---|
list | Wymagane | Hash list subskrypcyjnej |
Zwracane dane:
Adres email subskrybenta | ||
state | Status subskrybenta (zgodny z opisem w dziale „Kody Statusów Subskrybentów”) | |
custom_fields | Pola dodatkowe wraz z wartościami | |
errors | Tablica z błędami (w przypadku gdy któryś z adresów nie istnieje) |
Kody błędów:
1336 | Nie przekazano adresów email do dodania | |
---|---|---|
1341 | Lista subskrypcyjna nie istnieje | |
1342 | Tablica z subskrybentami jest pusta | |
1399 | Za dużo subskrybentów w jednym żądaniu – limit 100 |
Kasowanie wielu subskrybentów
Metoda kasuje subskrybentów z listy subskrypcyjnej
Wywołanie:
POST /rest/subscriber/deleteMultiple
Dane w POST:
subscribers | Wymagane | Tablica z adresami email użytkowników:
{ {"email":"tester1@freshmail.pl"}, {"email":"tester2@freshmail.pl"}, {"email":"tester3@freshmail.pl"} } |
|
---|---|---|---|
list | Wymagane | Hash list subskrypcyjnej |
Kody błędów:
1351 | Lista subskrypcyjna nie istnieje | |
---|---|---|
1352 | Żaden z subskrybentów nie istnieje/nie został skasowany | |
1399 | Za dużo subskrybentów w jednym żądaniu – limit 100 |
Zwracane dane/informacje o błędach są identyczne jak w przypadku metody /rest/subscriber/addMultiple
Dodawanie subskrybentów do listy odbiorców blokowanych
Metoda dodaje adresy subskrybentów do listy odbiorców blokowanych.
Wywołanie:
POST /rest/subscriber/addBlocks
Dane w POST:
emails | Wymagane | Tablica z adresami email użytkowników:
{ {"email":"tester1@freshmail.pl"}, {"email":"tester2@freshmail.pl"}, {"email":"tester3@freshmail.pl"} } |
---|
Zwracane dane:
stats['added'] | Ilość dodanych odbiorców | |
---|---|---|
stats['existing'] | Ilość już istniejących odbiorców | |
stats['incorrect'] | Ilość błędnych odbiorców | |
Incorrect_mails | Tablica z błędnymi adresami (w przypadku gdy jakiś mail był błędny) |
Kody błędów:
1301 | Adresy odbiorców są niepoprawne | |
---|---|---|
1336 | Nie przekazano adresów odbiorców do dodania | |
1343 | Format przekazanych danych jest niepoprawny |
Kasowanie subskrybentów z listy odbiorców blokowanych
Metoda kasuje subskrybentów z listy odbiorców blokowanych. Akcja możliwa jedynie przy adresach zablokowanych własnoręcznie
Wywołanie:
POST /rest/subscriber/removeBlocks
Dane w POST:
emails | Wymagane | Tablica z adresami email użytkowników:
{ {"email":"tester1@freshmail.pl"}, {"email":"tester2@freshmail.pl"}, {"email":"tester3@freshmail.pl"} } |
---|
Zwracane dane:
stats['removed'] | Ilość skasowanych odbiorców | |
---|---|---|
stats['not_existing'] | Ilość nieistniejących odbiorców | |
stats['incorrect'] | Ilość błędnych odbiorców |
Kody błędów:
1336 | Nie przekazano adresów odbiorców do dodania | |
---|---|---|
1343 | Format przekazanych danych jest niepoprawny |
Subskrybenci – zarządzanie subskrybentami
Kontroler służy do dodawania i aktualizowania danych o subskrybentach w listach subskrypcyjnych.
Kody statusów subskrybentów
Opis słowny | Wartość | Objaśnienie |
---|---|---|
Aktywny | 1 | Subskrybent aktywny do którego mogą być wysyłane kampanie |
Do aktywacji | 2 | Subskrybent który musi kliknąć w link akceptacyjny w mailu potwierdzającym jego dodanie do listy |
Nieaktywowany | 3 | Subskrybent który po okresie kilku dni nie kliknął w link akceptacyjny w mailu potwierdzającym |
Wypisany | 4 | Subskrybent który wypisał się z subskrypcji |
Odbijajacy „miękko” | 5 | Subskrybent którego skrzynka kilka razy z rzędu zwróciła maila z odpowiednim kodem (więcej: http://www.ietf.org/rfc/rfc1893.txt) |
Odbijajacy „twardo” | 8 | Subskrybent którego skrzynka kilka razy z rzędu zwróciła maila z odpowiednim kodem (więcej: http://www.ietf.org/rfc/rfc1893.txt) |
Dodanie subskrybenta
Metoda dodaje subskrybenta jeśli nie było go w liście subskrypcyjnej lub aktualizuje jego status i dane jeśli nie był w statusie „Aktywny” oraz „Do aktywacji”
Wywołanie:
POST /rest/subscriber/add
Dane w POST:
Wymagane | Adres email subskrybenta | ||
list | Wymagane | Hash list subskrypcyjnej | |
state | Opcjonalne | Status jaki chcemy nadać subskrybentowi, jeśli pole będzie puste zostanie nadany status „Do aktywacji”, lista dostępnych statusów w dziale „Kody Statusów Subskrybentów” | |
confirm | Opcjonalne | Czy do subskrybenta ma być wysłany email potwierdzający. Możliwe wartości to 0 oraz 1. Jeśli pole będzie puste zostanie wysłany email z potwierdzeniem. To pole jest ignorowane (email nie zostanie wysłany) jeśli nadamy subskrybentowi status inny niż „Do aktywacji”. | |
custom_fields | Opcjonalne | Tablica z polami dodatkowymi i wartościami w postaci:{"tag personalizacji pola 1":"wartość","tag personalizacji pola 2":"wartość"} |
Kody błędów:
1301 | Adres email jest niepoprawny | |
---|---|---|
1302 | Lista subskrypcyjna nie istnieje lub brak hash'a listy | |
1303 | Jedno lub więcej pól dodatkowych jest niepoprawne | |
1304 | Subskrybent już istnieje w tej liście subskrypcyjnej i ma status Aktywny lub Do aktywacji | |
1305 | Próbowano nadać niepoprawny status subskrybenta | |
1333 | Subskrybent jest na czarnej liście |
Modyfikowanie danych subskrybenta
Metoda aktualizuje status i dane subskrybenta
Wywołanie:
POST /rest/subscriber/edit
Dane w POST:
Wymagane |
Adres email subskrybenta |
||
list | Wymagane |
Hash list subskrypcyjnej |
|
state | Opcjonalne |
Status jaki chcemy nadać subskrybentowi, jeśli pole będzie puste aktualny status subskrybenta nie zostanie zmieniony |
|
custom_fields | Opcjonalne |
Tablica z polami dodatkowymi i wartościami w formacie: {"tag personalizacji pola 1":"wartość", "tag personalizacji pola 2":"wartość"} |
Kody błędów:
1331 | Subskrybent nie istnieje | |
---|---|---|
1302 | Lista subskrypcyjna nie istnieje lub brak hash'a listy | |
1305 | Próbowano nadać niepoprawny status subskrybenta |
Pobieranie danych subskrybenta
Wywołanie:
GET /rest/subscriber/get/[list]/[email]
Dane w GET:
Wymagane | Adres email subskrybenta | ||
list | Wymagane | Hash list subskrypcyjnej |
Zwracane dane:
Adres email subskrybenta | ||
state | Status subskrybenta (zgodny z opisem w dziale „Kody Statusów Subskrybentów”) | |
custom_fields | Wartość pól dodatkowych danego subskrybenta | |
id_hash | Unikalny identyfikator kampanii |
Kody błędów:
1311 | Adres email jest niepoprawny | |
---|---|---|
1312 | Lista subskrypcyjna nie istnieje |
Wyszukiwanie subskrybenta
Wywołanie:
GET /rest/subscriber/search/[email]
Dane w GET:
Wymagane | Adres email subskrybenta |
Zwracane dane:
lists | Tablica z hashami wszystkich list na których dany adres się znajduje |
---|
Kody błędów:
1311 | Adres email jest niepoprawny |
---|
Kasowanie subskrybenta
Metoda kasuje subskrybenta z listy subskrypcyjnej
Wywołanie:
POST /rest/subscriber/delete
Dane w POST:
Wymagane | Adres email subskrybenta | ||
list | Wymagane | Hash list subskrypcyjnej |
Kody błędów:
1321 | Adres email nie istnieje w tej liście subskrypcyjnej | |
---|---|---|
1322 | Lista subskrypcyjna nie istnieje lub brak hash'a listy |
Pobieranie historii akcji subskrybenta
Metoda pobiera ostatnie akcje subskrybenta
Wywołanie:
POST /rest/subscriber/getHistory
Dane w POST:
Wymagane | Adres email subskrybenta | ||
list | Wymagane | Hash list subskrypcyjnej | |
limit | Opcjonalne | Ilość pobranych akcji subskrybenta (domyślnie 10) |
Przykładowy request:
{"email":"tester1@freshmail.pl"
"list":"4zcnmd2ski"
"limit":"30"}
Zwracane dane:
name | Nazwa kampanii | |
---|---|---|
email_topic | Temat kampanii | |
scheduled_sent | Data i czas wysłania kampanii (format: rrrr-mm-dd hh:ii:ss) | |
state | Status subskrybenta (dostarczony, odbicie miękkie, odbicie twarde) | |
opens_count | Ilość otwarć subskrybenta | |
clicks_count | Ilość kliknięć subskrybenta |
Kody błędów:
1311 | Adres email jest niepoprawny | |
---|---|---|
1312 | Lista subskrypcyjna nie istnieje | |
1313 | Subskrybent nie istnieje w podanej liście subskrypcyjnej | |
1314 | Wartość atrybutu limit jest niepoprawna | |
1315 | Subskrybent nie posiada akcji |
Przykład odpowiedzi niepoprawnej:
{"status":"ERROR",
"errors":[{
"message":"Subscriber doesn't exist",
"code":1313 }]}
Przykład odpowiedzi poprawnej:
{"status":"OK",
"data":[{
"name":"4 kampania wtorkowa z dnia 30.07.2013",
"email_topic":"Jesienna promocja",
"scheduled_sent":"2013-07-30 21:37:42",
"state":"DELIVERED",
"opens_count":"1",
"clicks_count":"2" }]}
Tworzenie nowej kampanii
Kontroler służy do tworzenia, sprawdzania i wysyłania kampanii.
Wywołanie:
POST /rest/campaigns/create
Dane w POST:
name | Wymagane | Nazwa kampanii |
---|---|---|
url | Opcjonalne | Adres strony z której ma zostać pobrany kod HTML |
html | Wymagane* | Treść html emaila (wymagana jeśli nie ma treści text oraz adresu url ). |
text | Wymagane* | Treść tekstowa emaila (wymagana jeśli nie ma treści html). |
subject | Opcjonalne | Tytuł jaki ma mieć email wysłany przez system. W razie braku jako tytuł będzie wzięta nazwa kampanii. |
from_address | Opcjonalne | Pole „Od”, jeśli będzie puste w to miejsce wstawi się domyślny adres nadawcy z systemu. |
from_name | Opcjonalne | Pole „Nazwa nadawcy”, jeśli będzie puste w to miejsce wstawi się domyślna nazwa nadawcy z systemu. |
reply_to | Opcjonalne | Pole „Odpowiedz do”, jeśli będzie puste w to miejsce wstawi się domyślny adres nadawcy z systemu. |
list | Wymagane* | Hash listy subskrypcyjnej do której ma być wysłana kampania. Może być to tablica hashy jeśli wysyłka będzie do więcej niż jedne listy. W przypadku wysyłki do grupy nie trzeba podawać listy. |
group | Wymagane* | Hash grupy do której ma być wysłana kampania. Jeśli wysyłka będzie kierowana do więcej niż jednego segmentu odbiorców, może mieć postać tablicy (zestawu) hashy. W przypadku wysyłki do listy subskrypcyjnej nie trzeba podawać grupy. |
resignlink | Opcjonalne | Adres URL na jaki zostanie przekierowany odbiorca po kliknięciu na link rezygnacji |
Zwracane dane:
hash | W przypadku poprawnego utworzenia kampanii zwrócony zostaje jej hash |
---|
Kody błędów:
1701 | Brak nazwy kampanii |
---|---|
1702 | Brak treści (nie podano treści text, html ani url ) |
1703 | Błędny adres url |
1704 | Brak klienta (błąd wewnętrzny) |
1705 | Brak parametrów (błąd wewnętrzny) |
1706 | Błędny adres nadawcy (from_address) |
1707 | Błędny adres „reply to” |
1708 | Brak listy subskrypcyjnej i grupy |
1709 | Co najmniej jeden hash listy jest błędny. |
1710 | Co najmniej jeden hash grupy jest błędny. |
1711 | Nie znaleziono list o podanym hashu. |
1712 | Nie znaleziono grupy o podanym hashu. |
1713 | Link rezygnacji musi być poprawnym adresem URL |
Kampanie – obsługa kampanii
Wysłanie kampanii
Wywołanie:
POST /rest/campaigns/edit
Dane w POST:
id_hash | Wymagane | Hash kampanii do edytowania |
---|---|---|
name | Opcjonalne | Nazwa kampanii |
url | Opcjonalne | Adres strony z której ma zostać pobrany kod HTML |
html | Opcjonalne | Treść html emaila |
text | Opcjonalne | Treść tekstowa emaila |
subject | Opcjonalne | Tytuł jaki ma mieć email wysłany przez system. W razie braku jako tytuł będzie wzięta nazwa kampanii. |
from_address | Opcjonalne | Pole „Od”, jeśli będzie puste w to miejsce wstawi się domyślny adres nadawcy z systemu. |
from_name | Opcjonalne | Pole „Nazwa nadawcy”, jeśli będzie puste w to miejsce wstawi się domyślna nazwa nadawcy z systemu. |
reply_to | Opcjonalne | Pole „Odpowiedz do”, jeśli będzie puste w to miejsce wstawi się domyślny adres nadawcy z systemu. |
list | Opcjonalne | Hash listy subskrypcyjnej do której ma być wysłana kampania. Może być to tablica hashy jeśli wysyłka będzie do więcej niż jedne listy. W przypadku wysyłki do grupy nie trzeba podawać listy. |
group | Opcjonalne | Hash grupy do której ma być wysłana kampania. Może być to tablica hashy jeśli wysyłka będzie do więcej niż jedne grupy. W przypadku wysyłki do listy subskrypcyjnej nie trzeba podawać grupy. |
resignlink | Opcjonalne | Adres URL na jaki zostanie przekierowany odbiorca po kliknięciu na link rezygnacji |
Kody błędów:
1750 | Brak kampanii do edycji o podanym hashu |
---|---|
1751 | Kampania już została ustawiona do wysyłki, modyfikacja niemożliwa |
Reszta kodów błędów jest identyczna jak w przypadku tworzenia kampanii.
Kasowanie kampanii
Wywołanie:
POST /rest/campaigns/delete
Dane w POST:
hash | Wymagane | Hash kampanii do skasowania |
---|
Kody błędów:
1724 | Brak kampanii o takim hashu |
---|---|
1798 | Kampania już została skasowana |
Wysłanie kampanii testowej
Wywołanie:
POST /rest/campaigns/sendTest
Dane w POST:
hash | Wymagane | Hash kampanii którą chcemy wysłać |
---|---|---|
emails | Wymagane | Adres lub tablica adresów na które test ma być wysłany. |
custom_fields | Opcjonalne | Tablica z polami dodatkowymi, w przypadku pozostawienia pola pustego wartości pól dodatkowych zostaną uzupełnione losowymi danymi z listy subskrypcyjnej |
Przykładowy request:
{"hash":"hash_kampanii",
"emails":"test@test.pl",
"custom_fields":{
"imie":"Jan",
"nazwisko":"Kowalski"}}
lub
{"hash":"hash_kampanii",
"emails":["test1@test.pl","test2@test.pl"]}
Kody błędów:
1721 | Brak hasha lub jest on niepoprawny. |
---|---|
1722 | Brak adresu email. |
1723 | Co najmniej jeden adres email jest niepoprawny. |
1724 | Kampania o takim hashu nie istnieje. |
1725 | Kampania nie jest jeszcze gotowa do wysyłki testowej. |
1726 | Wysyłka nie powiodła się. |
1737 | Błąd treści kampanii. Dokładny opis błędu będzie zawarty w informacji zwróconej przez api |
Wysłanie kampanii
Wywołanie:
POST /rest/campaigns/send
Dane w POST:
hash | Wymagane | Hash kampanii którą chcemy wysłać |
---|---|---|
time | Opcjonalne | Data wysłania kampanii w formacie YYYY-MM-DD H:i:s |
Kody błędów:
1731 | Brak hasha lub jest on niepoprawny. |
---|---|
1732 | Czas wysyłki jest niepoprawny |
1733 | Czas wysyłki nie może być wcześniejszy niż obecna godzina. |
1734 | Kampania o takim hashu nie istnieje. |
1735 | Kampania nie jest jeszcze gotowa do wysyłki testowej. |
1736 | Kampania już jest ustawiona do wysyłki lub jest w jej trakcie. |
1737 | Błąd treści kampanii. Dokładny opis błędu będzie zawarty w informacji zwróconej przez api |
Raporty – raporty z kampanii
Kontroler służy do pobierania raportów oraz list wysłanych kampanii.
Pobieranie listy wysłanych kampanii
Wywołanie:
GET /rest/reports/campaignsList/[page]
Dane w GET:
page | Opcjonalne | Numer strony z kampaniami, domyślnie pobierana jest pierwsza strona |
---|
W odpowiedzi serwer zwróci listę 25 kampanii.
Zwracane dane:
name | Nazwa kampanii |
---|---|
topic | Temat emaila w kampanii |
subscribers | Ilość subskrybentów do których była wysyłka |
id_hash | Unikalny identyfikator kampanii |
sent | Data wysyłki kampanii, format: rrrr-mm-dd hh:ii:ss |
Pobieranie zbiorczego raportu z kampanii
Wywołanie:
GET/rest/reports/campaign/[id_hash]
Dane w GET:
id_hash | Wymagane | Unikalny identyfikator kampanii, można go otrzymać wywołując metodę /rest/reports/campaignsList |
---|
Zwracane dane:
subscribers | Liczba wszystkich subskrybentów do których wysłano kampanię |
---|---|
delivered | Liczba dostarczonych wiadomości |
hard_bounce | Liczba wiadomości odbitych „twardo” (http://www.ietf.org/rfc/rfc1893.txt) |
soft_bounce | Liczba wiadomości odbitych „miękko” (http://www.ietf.org/rfc/rfc1893.txt) |
opened | Liczba wszystkich otwartych wiadomości |
clicked | Liczba wszystkich kliknięć w danym przedziale czasowym |
unique_opened | Liczba unikalnych otwarć wiadomości |
unique_clicked | Liczba unikalnych klikniętych wiadomości |
resigned | Liczba wypisanych subskrybentów |
Pobieranie zachowań subskrybentów w czasie
Wywołanie:
GET /rest/reports/campaignTimeDetails/[id_hash]
Dane w GET:
id_hash | Wymagane | Unikalny identyfikator kampanii, można go otrzymać wywołując metodę/rest/reports/campaignsList |
---|
Zwracane dane:
tablica z kolejnymi działaniami subskrybentów w czasie:
{"status":"OK","data":
[
{"opened":"4",
"unique_opened":"4",
"clicked":"3",
"unique_clicked":"1",
"time":"2012-03-26 16:50"},
{"opened":"1",
"unique_opened":"1",
"clicked":"1",
"unique_clicked":"1",
"time":"2012-03-27 08:30"}
]
}
opened | Liczba wszystkich otwarć w danym przedziale czasowym |
---|---|
clicked | Liczba wszystkich kliknięć w danym przedziale czasowym |
unique_opened | Liczba unikalnych otwartych emaili w danym przedziale czasowym |
sunique_clicked | Liczba unikalnych emaili z klikniętym linkiem w danym przedziale czasowym |
time | Czas w formacie „rrrr-mm-dd HH:ii”, rozdzielczość okna to 10 minut |
Kody błędów:
1401 | Niepoprawny numer strony |
---|---|
1402 | Kampania o podanych id_hash nie istnieje |
Wiadomości SMS
Kontroler służy do wysyłki pojedynczych wiadomości SMS. Domyślnie wszystkie parametry muszą być przekazane w kodowaniu UTF-8.
Uwagi ogólne
Numery telefonu muszą być podawane w formacie 9 lub 11 cyfrowym (np. 48502602702 lub 502602702), możliwe jest także dodanie znaku „+” przed prefixem kraju (np. +48502602702). Obecnie sms'y są wysyłane tylko do polskich numerów, czyli do numerów z prefiksami rozpoczynających się od +48.
Treść pojedynczej wiadomości to standardowo do 160 znaków lub 70 znaków w przypadku wystąpienia chociaż jednego znaku specjalnego. Maksymalna długość wiadomości wynosi 459 znaków (lub 200 ze znakami specjalnymi) i jest wysłana jako 3 połączone SMS-y.
Znakami specjalnymi są wszystkie znaki nie mieszczące się w zestawie znaków:
@£$¥èéùìòÇØøÅå_^{}\[~]| ÆæßÉ!"#¤%&'()*€+,-./0-9:;<=>?A-ZÄÖÑܧ¿a-zäöñüà
Uwaga
Znaki: ^ { } [ ] ~ € \ | <enter> zawsze liczone są podwójnie (bez względu na to czy wysyłamy SMS ze znakami specjalnymi czy bez) ze względu na wymogi specyfikacji GSM.
SMS bez znaków specjalnych | SMS ze znakami specjalnymi | ||
---|---|---|---|
Maksymalna ilość znaków | Ilość SMSów | Maksymalna ilość znaków | Ilość SMSów |
160 | 1 | 70 | 1 |
306 | 2 | 134 | 2 |
459 | 3 | 200 | 3 |
Rodzaje wiadomości SMS
Kontroler umożliwia wysłanie wiadomości dwóch rodzajów: wiadomości typu PRO oraz 2WAY.
SMS typu PRO to wiadomość wysyłana z nadpisem alfanumerycznym, czyli zdefiniowanym polem nadawcy. Pole to nie może zawierać więcej niż 11 znaków z zestawu a-zA-Z0-9 oraz znak myślnika „-”. Aby korzystać z SMS typu PRO konieczne jest zgłoszenie nadpisu w systemie FreshMail.
SMS typu 2WAY to wiadomość wysłana z konkretnego numeru telefonu na który odbiorca może odpowiedzieć. Odpowiedź zostanie zarejestrowana w systemie FreshMail.
Cennik
Aby móc korzystać z wysyłki SMS należy w pierwszej kolejności podpisać umowę. Ceny za sms typu PRO, 2WAY są zawarte w umowie.
Wysyłanie wiadomości SMS
Wywołanie: POST /rest/sms
Dane w POST.
Parametr | Wymagany | Uwagi | Opis |
---|---|---|---|
gsm | tak | Numer telefonu | W formacie +48XXXXXXXXX lub XXXXXXXXX |
text | tak | Treść wiadomości SMS | |
from | nie | Nadpis w wiadomości SMS | Nadpis w pierwszej kolejności musi zostać zgłoszony, aby można było z niego korzystać. Aby wysłać wiadomość typu 2WAY należy w polu from umieścić wartość 2way |
single | nie | Wysyłka pojedynczej wiadomości SMS | Jeśli ta opcja przyjmuje wartość true wtedy wiadomość zostanie wysłana tylko jeśli zmieści się w pojedynczym SMSie, jeśli wiadomość będzie za długa nie zostanie wysłana |
messageId | nie | Identyfikator wiadomości | String nie przekraczający 42 znaki. Zostanie zwrócony razem z raportem doręczenia |
Przykładowe żądanie (wykonane za pomocą biblioteki Curl):
curl -v -H "X-Rest-ApiKey:APIKEY" -H "X-Rest-ApiSign:APISIGN" -H "Content-Type:application/json" https://api.freshmail.com/rest/sms -d '{"gsm":"phoneNumber","text":"Example SMS message","messageId":432523,"from":"Recepcja"}'
Poprawna odpowiedź:
{"status":"OK"}
Błędna odpowiedź:
{
"status":"ERROR",
"errors":[
{
"message":"SMS inscription (from) doesn't exist",
"code":1105
}
]
}
Kody błędów:
Kod błędu | Opis |
---|---|
1101 | Numer GSM jest błędny |
1102 | Treść SMSa jest pusta |
1103 | Treść SMSa jest za długa (SMS bez znaków specjalnych) |
1104 | Treść SMSa jest za długa (SMS ze znakami specjalnymi) |
1105 | Nadawca jest błędny |
1106 | Nadawca został niepotwierdzony (nadawca jest poprawny, ale oczekuje na weryfikację) |
1107 | Żądanie jest w złym kodowaniu, obsługiwane kodowanie to UTF-8 |
1108 | Treść SMSa jest za długa (SMS bez znaków specjalnych z opcją single=1) |
1109 | Treść SMSa jest za długa (SMS ze znakami specjalnymi z opcją single=1) |
1110 | Numer nadawcy SMSa 2WAY nie jest skonfigurowany lub wygasł |
1150 | SMS nie zostanie wysłany, konieczne jest podpisanie umowy |
Pobranie raportu doręczenia wiadomości
sms/reports
Raporty wiadomości SMS
Parametr | Wymagany | Uwagi | Opis |
---|---|---|---|
startDate | nie | Data od której zostaną pobrane raporty | W formacie YYYY-MM-DD HH:ii:ss lub YYYY-MM-DD |
endDate | nie | Data od której zostaną pobrane raporty | W formacie YYYY-MM-DD HH:ii:ss lub YYYY-MM-DD |
page | nie | Strona z wynikami którą chcemy pobrać, w domyśle zawsze pobieramy stronę nr 1 | Nadpis w pierwszej kolejności musi zostać zgłoszony, aby można było z niego korzystać. Aby wysłać wiadomość typu 2WAY należy w polu from umieścić wartość 2way |
Przykładowe żądanie (wykonane za pomocą biblioteki Curl):
curl -v -H "X-Rest-ApiKey:APIKEY" -H "X-Rest-ApiSign:APISIGN" -H "Content-Type:application/json" https://api.freshmail.com/rest/sms/reports -d '{"startDate":"2015-12-17","endDate":"2015-12-18"}'
Poprawna odpowiedź:
{
"status":"OK",
"data":[
{
"send_date":"2015-12-17 13:21:42",
"gsm":"+48555666777",
"from":"",
"type":"eco",
"message_id":"myCustomId-423657",
"modification_date":"2015-12-17 13:24:13",
"status":"DELIVERED",
"responses":[]
},
{
"send_date":"2015-12-17 13:27:21",
"gsm":"666777888",
"from":"2way",
"type":"2way",
"message_id":"myCustomId-54321345",
"modification_date":"2015-12-17 13:28:01",
"status":"DELIVERED",
"responses":[
{
"text":"Great response",
"time":"2015-12-30 07:48:33"
},
{
"text":"My another response",
"time":"2015-12-30 08:34:41"
}
]
},
{
"send_date":"2015-12-17 13:27:29",
"gsm":"777888999",
"from":"Recepcja",
"type":"pro",
"message_id":"myCustomId-3245154",
"modification_date":"2015-12-17 13:28:02",
"status":"SENT",
"responses":[]
},
{
"send_date":"2015-12-17 13:29:01",
"gsm":"",
"from":"Recepcja",
"type":"pro",
"message_id":"myCustomId-3245154",
"modification_date":"2015-12-17 13:29:01",
"status":"ERROR",
"error":"INVALID_PHONE_NUMBER",
"responses":[]
},
{
"send_date":"2015-12-18 09:01:01",
"gsm":"888999000",
"from":"",
"type":"mms",
"message_id":"myCustomId-41532",
"modification_date":"2015-12-18 09:01:55",
"status":"DELIVERED",
"responses":[]
}
],
"resultCounts":5,
"allData":1
}
Pola zawarte w odpowiedzi:
Parametr | Opis |
---|---|
data | Zawiera wszystkie dane o wysłanych w danym okresie wiadomościach SMS |
resultCounts | Ilośc zwróconych rekordów w polu data |
allData | Czy zostały zwrócone wszystkie rekordy z danego okresu. Limit ilości zwracanych danych wynosi 1000 rekordów. Jeśli w odpowiedzi będzie znalezionych więcej rekordów zwracane jest pierwsze 1000, kolejne dane należy pobierać korzystając z parametru page |
Możliwe statusy wiadomości SMS
Parametr | Opis |
---|---|
NOT_FOUND | Błędny numer ID lub raport wygasł |
EXPIRED | Wiadomość niedostarczona z powodu zbyt długiego czasu niedostępności numeru |
SENT | Wiadomość została wysłana ale operator nie zwrócił jeszcze raportu doręczenia |
DELIVERED | Wiadomość dotarła do odbiorcy |
UNDELIVERED | Wiadomość niedostarczona (np.: błędny numer, numer niedostępny) |
FAILED | Błąd podczas wysyłki wiadomości - prosimy zgłosić |
REJECTED | Wiadomość niedostarczona (np.: błędny numer, numer niedostępny) |
UNKNOWN | Brak raportu doręczenia dla wiadomości (wiadomość doręczona lub brak możliwości doręczenia) |
QUEUE | Wiadomość czeka w kolejce na wysyłkę |
ACCEPTED | Wiadomość przyjęta przez operatora |
RENEWAL | Wykonana była próba połączenia która nie została odebrana, połączenie zostanie ponowione. |
STOP | Wysyłka wiadomość została wstrzymana |
ERROR | Wiadomość nie została wysłana |
Jeśli wiadomość SMS nie została wysłana (czyli status wiadomości to ERROR) w dodatkowym parametrze error pojawi się powód nie wysłania wiadomości. Poniżej znajdują się możliwe kody błędów wysyłki wiadomości:
Parametr | Opis |
---|---|
INVALID_PHONE_NUMBER | Błędnym numer telefonu lub brak numeru telefonu |
WRONG_SENDER_NAME | Niepoprawna nazwa nadawcy (najprawdopodobniej nadpis nie został zgłoszony) |
UNKNOWN_ERROR | Wiadomość nie została wysłana, wewnętrzny błąd operatora |
Pole modification_date:
W tym polu znajduje się czas ostatniej modyfikacji pola STATUS.
Odpowiedz na wiadomości typu 2WAY
Jeśli w polu from została umieszczona wartość 2way to wiadomość SMS jest wysyłana z numeru telefonu na który odbiorca może odpisać. Wszystkie odpowiedzi na wiadomości znajdują się w polu responses i mają format tablicy. Jeśli odbiorca SMSa odpowie na niego więcej niż jeden raz kolejne odpowiedzi będą elementami tablicy jak w przykładzie powyżej.
Wysyłanie pojedynczych maili
Kontroler służy do wysyłki pojedynczych wiadomości email.
API V2 nie jest obecnie rozwijaną wersją API. Rekomendujemy używanie API V3, które jest bardziej wydajne i funkcjonalne.
Aby uruchomić usługę Email API i SMTP w pełnej wersji skontaktuj się z nami.
Ping – testowanie
Kontroler ten służy do przetestowania poprawności działania API. Osobno można przetestować poprawność działania żądań typu GET oraz żądań typu POST.
Wywołanie: GET /rest/ping
W odpowiedzi serwer zwróci „pong”.
Wywołanie: POST /rest/ping
W odpowiedzi serwer zwróci dane które wysyła się w POST.